我正在开发两个python包,pkg_a
和pkg_b
pkg_a
是pkg_b
的要求,因此pkg_b
的setup.py
如下所示:
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,
)
由于我同时开发这两个包,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
我猜这与版本控制有关,但我不知道如何解决这个问题。有什么建议吗
这就是VCS依赖关系的处理方式。您应该指定固定引用(标记、提交id):
见:https://pip.pypa.io/en/stable/reference/pip_install/#git
如果未指定固定引用(非移动标记或提交ID),则每次都必须克隆pip,因为自上次安装以来存储库的内容可能已更改
(老实说,即使在这次更改之后,pip可能仍会在每次安装时重新克隆,我记不清确切的行为。)
见类似问题:pip install upgrade fail to upgrade private dependency
相关问题 更多 >
编程相关推荐