擅长:python、mysql、java
<p>实际上,您可以自己尝试:
让我们构建并安装一个模块,然后对其进行修改,以查看谁更喜欢:</p>
<p><code>mymod | setup.py
| mymod | myfun.py
| __init__.py</code></p>
<p>setup.py包含:</p>
<pre><code>from setuptools import setup, find_packages
setup(
name='mymod',
version='1.0',
packages=find_packages(),
)
</code></pre>
<p>myfun.py包含:</p>
<pre><code>def myfun():
print('original Mod')
</code></pre>
<p>现在我们制作一个virtualenv并安装它:</p>
<pre><code>virtualenv venv -p python3
source venv/bin/activate
cd mymod
python setup.py install
</code></pre>
<p>现在我们转到python并导入</p>
<pre><code>from mymod.mymod.myfun import myfun
myfun()
# Returns original Mod
</code></pre>
<p>现在我们修改myfun.py而不安装它:</p>
<pre><code>def myfun():
print('Modified Mod')
</code></pre>
<p>我们回到python:</p>
<pre><code>from mymod.mymod.myfun import myfun
myfun()
# returns Modified Mod
</code></pre>
<p>所以看起来目录优先于模块,但是试试看</p>
<p>(注意,如果我们切换到一个目录,其中mymod.myfun不直接在我们的路径中,它将返回到打印原始mod)</p>