【问题标题】:Pip freeze not properly showing git dependency in venvPip freeze 无法正确显示 venv 中的 git 依赖关系
【发布时间】:2021-08-21 22:33:59
【问题描述】:

我已经使用以下命令将一些 python 包从 git 存储库安装到 venv 中:

python -m pip install git+ssh://git@git.privateurl.com/repos/my-private-package.git

现在,当我运行pip freeze 时,该包看起来像my-private-package=0.2.1 这样的第3 方包,而不是以下形式:

my-private-package @ git+ssh://git@git.privateurl.com/repos/my-private-package.git

如何强制它显示为后者,以便当我生成 requirements.txt 时,它可以轻松共享给只需要运行 python -m pip install -r requirements.txt 的其他同事?

我尝试了不同的 python 版本(3.6、3.7、3.8)。我正在使用最新的 pip 版本 (21.1.2),我已经尝试过 Ubuntu 和 Mac,但仍然重现了这个问题。最奇怪的是一位同事可以运行相同的命令并得到正确的结果。

【问题讨论】:

  • 您在运行pip freeze 之前尝试过更新pip 吗? -- 可能相关:PEP 610.
  • 你提到你的 pip 是最新的,我没有读过这个。

标签: python pip python-packaging


【解决方案1】:

我不知道pip freeze 将如何/是否会这样做,但您可以使用pip-compile(来自pip-tools 包)将带有 git url 的 requirements.in 列表转换为仍然存在的需求列表有一个 git-url。随附的pip-sync 会将您的 virtualenv 包同步到需求列表中指定的包。

【讨论】:

    【解决方案2】:

    您尝试安装的软件包中包含 egg-info 的目录可能存在问题。尝试删除它,然后使用pip install -e 重新安装包。它将使用正确的 egg-info 创建新目录。

    【讨论】:

      猜你喜欢
      • 2014-02-15
      • 2013-04-20
      • 2011-08-19
      • 2020-07-10
      • 2017-03-16
      • 2019-12-24
      • 2021-02-24
      • 2014-11-20
      相关资源
      最近更新 更多