Setup.py重新安装已安装的UserWrite软件包

2024-05-23 18:02:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发两个python包,pkg_apkg_bpkg_apkg_b的要求,因此pkg_bsetup.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

我猜这与版本控制有关,但我不知道如何解决这个问题。有什么建议吗


Tags: installpipfrompyimportgitpackagessetup
1条回答
网友
1楼 · 发布于 2024-05-23 18:02:53

这就是VCS依赖关系的处理方式。您应该指定固定引用(标记、提交id):

'pkg_a @ git+ssh://git@bitbucket.org/vlad/pkg_a.git@da39a3ee5e6b4b0d3255bfef95601890afd80709'

见:https://pip.pypa.io/en/stable/reference/pip_install/#git

如果未指定固定引用(非移动标记或提交ID),则每次都必须克隆pip,因为自上次安装以来存储库的内容可能已更改

(老实说,即使在这次更改之后,pip可能仍会在每次安装时重新克隆,我记不清确切的行为。)

见类似问题:pip install upgrade fail to upgrade private dependency

相关问题 更多 >