添加新脚本/子模块等后,为什么要再次运行setup.py develop
?
例如,我这样做:
pyvenv venv
. venv/bin/activate
现在,创建这些文件:
/
| setup.py
| testpkg
| | __init__.py
| | foo.py
| |__
|__
(setup.py是一个简单的,foo.py包含一个函数) 然后,
python setup.py develop
现在,如果你启动python,你可以导入testpkg.foo
。
但是现在,添加bar.py:
/
| setup.py
| testpkg
| | __init__.py
| | foo.py
| | bar.py <---
| |__
|__
您无法导入testpkg.bar
除非你再次跑步
python setup.py develop
为什么? (为什么它不起作用,为什么选择这种行为,如果它是预期的行为?)
注(并编辑)
在我的计算机上,运行python setup.py develop
后,我注意到该链接指向build / lib / [...]。egg-info
并且在egg信息中,我看到源指向此build / lib。这里的文件不是链接,所以它应该如何工作?
答案 0 :(得分:0)
检查是否设置了标志use_2to3。然后,正如医生所说:
如果您启用了use_2to3标志,那么当然是.egg-link 在Python 3下运行时,不会直接链接到您的源代码, 因为该源代码将用于Python 2而不能在其下工作 Python 3.相反,setup.py开发将构建Python 3代码 构建目录,并在那里链接。这意味着在做完代码之后 在进行这些更改之前,您必须运行setup.py build 通过Python 3安装获取。