擅长:python、mysql、java
<p>我终于找到了答案:</p>
<pre><code>import MyPak
from MyPak import MyMod
</code></pre>
<p>编辑<code>MyPak/MyMod.py</code>文件后,要在文件<code>MyMod.py</code>中重新加载类<code>MyMod</code>,需要</p>
<pre><code>import sys
del sys.modules['MyPak.MyMod']
reload(MyPak)
from MyPak import MyMod
</code></pre>
<p><strong>注意事项:</p>
<ol>
<li><p>执行<code>del MyPak</code>或<code>del MyMod</code>或<code>del MyPak.MyMod</code>并不能解决问题,因为它只是删除名称绑定。Python只搜索<code>sys.modules</code>以查看模块是否已经导入。查看文章<a href="https://stackoverflow.com/questions/7121802/module-name-in-sys-modules-and-globals">module name in sys.modules and globals()</a>中的讨论。</p></li>
<li><p>重新加载MyPak时,python尝试执行<code>MyPak/__init__.py</code>中的<code>from MyMod import MyMod</code>行。但是,它在<code>sys.modules</code>中找到<code>MyPak.MyMod</code>,因此它不会</strong>
重新加载<code>MyMod</code>,尽管<code>MyPak/MyMod.py</code>已更新。你会发现没有新的<code>MyPak/MyMod.pyc</code>生成。</p></li>
</ol>