为什么在“setup.py 开发”之后,新的子模块不可用



为什么在添加新脚本/子模块等后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/[...]。鸡蛋信息

在鸡蛋信息中,我看到来源指向此构建/库。 这里的文件不是链接,那么它应该如何工作?

检查标志use_2to3是否设置。然后,正如文档所说:

如果您启用了 use_2to3 标志,那么当然是 .egg-link 在 Python 3 下运行时不会直接链接到您的源代码, 因为该源代码是为 Python 2 制作的,而不是在 蟒蛇 3.相反,开发 setup.py 将在下面构建Python 3代码。 构建目录,并链接到那里。这意味着在做完代码之后 在这些更改之前,您必须运行 setup.py 构建的更改 由您的 Python 3 安装拾取。

  • https://pythonhosted.org/setuptools/setuptools.html

相关内容

最新更新