什么 setup.py 命令将更新站点包中的源代码?

What setup.py command will update the source in site-packages?

我有运行

python setup.py sdist --formats=gztar,zip bdist_wheel

然后

python setup.py install

结果是 egg 文件是在 site-packages 目录中创建的,但 不是 <package-name>/<package-source files>:

$ls  /usr/local/lib/python3.7/site-packages/infix*
/usr/local/lib/python3.7/site-packages/infixpy-0.0.3-py3.7.egg
/usr/local/lib/python3.7/site-packages/infixpy.egg-link
/usr/local/lib/python3.7/site-packages/infixpy-0.0.4-py3.7.egg

请注意目录 infix 而不是 创建 - 因此 none 的源代码被复制。在此本地安装过程中我缺少/不理解什么?

更新当我有运行

  pip3 install infixpy

还有一个目录 infix,源代码包含在该目录中。 运行 setup.py installlocaldevel 模式不会导致代码更新,而且 - 至关重要的是 - stacktraces 来自 运行ning 任何 python 代码(即使在全新的 ipython repl 中)也只显示较旧的 / pip3 安装代码。特别是文件 __init__.py 所以我的观察是源文件 :

/usr/local/lib/python3.7/site-packages/infixpy/__init__.py

准确反映了 python 可执行文件所使用的内容。 @phd 提到源代码已经包含在 egg 中。所以我不明白 egg 中的源代码和那个子目录中的源代码之间的关系 - 在我的最新 运行 中完全没有。

以下命令都会产生略有不同的结果:

  • pip install .: 安装为未压缩包目录和一个 XXX.dist-info 目录
  • pip install infixpy:与之前相同,但从(远程)索引安装(默认 PyPI),而不是从本地目录
  • python setup.py install:安装为压缩文件 XXX.egg
  • pip install --editable .python setup.py develop:未安装,但链接为 XXX.egg-link 文件

所以根据输入的命令不同,site-packages的内容也不同

现在这就是你所说的:

$ls  /usr/local/lib/python3.7/site-packages/infix*
/usr/local/lib/python3.7/site-packages/infixpy-0.0.3-py3.7.egg
/usr/local/lib/python3.7/site-packages/infixpy.egg-link
/usr/local/lib/python3.7/site-packages/infixpy-0.0.4-py3.7.egg```

这有点令人惊讶,因为理论上您的项目有 3 个版本可以导入(0.0.30.0.4develop/可编辑)。在这种情况下,我不确定 Python 解释器使用了哪一个。您可能想要 运行 pip uninstall infixpy 几次以重新开始并减轻这些不确定性。然后,您可以试验上述命令并查看它们如何影响 site-packages 的内容以及检查 pip show infixpy.

的结果