Vla*_*lad 5 python git pip setuptools setup.py
我正在开发两个 python 包,pkg_a和pkg_b. pkg_a是 的要求pkg_b,所以setup.pyforpkg_b看起来像这样:
from setuptools import setup
inst_reqs = [
'pkg_a @ git+ssh://git@bitbucket.org/vlad/pkg_a.git',
]
setup(
name="pkg_b",
version="0.0.0",
packages=['pkg_b'],
install_requires=inst_reqs,
)
Run Code Online (Sandbox Code Playgroud)
由于我正在同时开发这两个软件包,pkg_a因此已经以可编辑模式 ( pip install -e .)安装。
pip安装时pkg_b,为什么pkg_a删除了现有的安装?看起来 pip 将系统地锥化指定的 repo,卸载现有的pkg_a并从克隆的 repo 重新安装它:
Successfully built pkg_a
Installing collected packages: pkg_a, pkg_b
Attempting uninstall: pkg_a
Found existing installation: pkg_a 0.0.0
Uninstalling pkg_a-0.0.0:
Successfully uninstalled pkg_a-0.0.0
Running setup.py develop for pkg_b
Successfully installed pkg_a-0.0.0 pkg_b
Run Code Online (Sandbox Code Playgroud)
我猜这与版本控制有关,但我不知道如何解决这个问题。有小费吗?
这就是 VCS 依赖关系的处理方式。您应该指定一个固定引用(标签、提交 ID):
'pkg_a @ git+ssh://git@bitbucket.org/vlad/pkg_a.git@da39a3ee5e6b4b0d3255bfef95601890afd80709'
Run Code Online (Sandbox Code Playgroud)
请参阅: https: //pip.pypa.io/en/stable/reference/pip_install/#git
如果您没有指定固定引用(非移动标签或提交 ID),则 pip 每次都必须克隆,因为自上次安装以来存储库的内容可能已更改。
(说实话,即使在进行此更改之后, pip可能仍然会在每次安装时重新克隆,我不记得具体的行为了。)
看到类似的问题:pip安装升级无法升级私有依赖项