<p>我发现,相对的进口和项目布局可能是相当棘手的获得窍门!如果您遵循以下步骤,您应该让它正常工作:</p>
<ul>
<li>首先,如果您使用python<;2.5,请确保您有<code>from __future__ import relative_imports</code>。在</li>
<li><p>为了简单起见,你需要这个布局</p>
<pre><code>Project Root Folder:
Test_Folder:
__init__.py
UtilityFunctions.py
PerformAllIndexing.py
all_recipes:
__init__.py
index.py
simply_recipes:
__init__.py
index.py
</code></pre>
<p>注意,^{<cd3>中没有<code>__init__</code>。</p></li>
<li>然后需要确保<code>Project Root Folder</code>在您的<code>PYTHONPATH</code>中。在</li>
<li><p>现在,库中的相对导入应该可以正常工作,例如在<code>all_recipes.index</code>中:</p>
^{pr2}$
<p>绝对导入从<code>Test Folder</code>开始,例如</p>
<pre><code>from Test_Folder import UtilityFunctions
</code></pre></li>
</ul>
<p>但是,如果您只是尝试运行<code>all_recipes.index</code>,那么这个<em>将不起作用。运行脚本时,它需要绝对导入。把它想象成你在写一个库和一个使用这个库的脚本。该库使用相对导入,但不能使用<code>python -m</code>正常运行。您可以像这样运行脚本,但不能使用相对导入。所以你的剧本看起来像</p>
<pre><code> from Test_Folder.PerformAllIndexing import run
run()
</code></pre>
<p>当您尝试运行单元测试时,这可能会导致问题,因为您并不总是希望运行整个套件。我对测试的建议是在<code>Project Root Folder</code>下的一个单独的<code>tests</code>文件夹中保存,并且只使用绝对导入。使用测试运行程序(如<a href="http://readthedocs.org/docs/nose/en/latest/" rel="nofollow">nose</a>)也有帮助。在</p>