【问题标题】:Why after `setup.py develop` new submodules are not available?为什么在 `setup.py develop` 之后新的子模块不可用?
【发布时间】:2016-03-01 22:04:56
【问题描述】:

添加新脚本/子模块等后,为什么我要再次运行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。这里的文件不是链接,那么它应该如何工作??

【问题讨论】:

  • 呃...为什么-1 Oo ...我检查过这个问题以前没有被问过,这是一个真正的问题,因为可编辑模式在我的电脑上不起作用...跨度>

标签: python setuptools


【解决方案1】:

检查是否设置了标志 use_2to3。然后,正如医生所说:

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

【讨论】:

    猜你喜欢
    • 2014-01-26
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    相关资源
    最近更新 更多