pip 从具有外部依赖性的本地安装私有包

pip install private package from local with external dependency

我正在使用 pip 在虚拟环境中安装一些私有包。 使用 python 版本 3.7.3 和 pip 版本 18.1

我已经将那个私有包的 .whl 文件复制到本地目录。 现在该包具有外部依赖项和另一个私有包以及 public 个包。

Public 包我指的是可从 public 存储库(pypi 或 piwheels)获得的包。

我试过使用

pip install my-private-package -f /path/to/private/package/directory

现在,失败并显示以下消息:

Could not install packages due to an EnvironmentError: 404 Client Error: Not Found for url: https://pypi.org/simple/my_private_package

然后我尝试了以下两个命令(预计会失败)

pip install -f /path/to/private/package/directory --no-index

pip install --no-index --find-links=/path/to/private/package/directory private-package  --extra-index-url https://pypi.org/simple --extra-index-url  https://www.piwheels.org/simple

那些如预期的那样失败并显示相同的错误消息

Could not find a version that satisfies the requirement public-package==x.x.x (from private-package->another-private-package) (from versions: )

我也试过了

pip install /path/to/private/package/directory/private_package_x_x_x.whl

这也失败了,并显示以下错误消息。这意味着在 public 存储库中找不到另一个私有包。这很明显。

Could not install packages due to an EnvironmentError: 404 Client Error: Not Found for url: https://pypi.org/simple/another-private-package/

最后一次尝试:

pip install /path/to/private/package/directory/private_package_x_x_x.whl --find-links=/path/to/private/package/directory

很遗憾,这次也没有运气。

我可以想到几个解决方法:

  1. 下载所有依赖并保存在本地目录(/path/to/private/package/directory)
  2. 创建私人服务器并通过 http 提供索引信息

现在,我对选项 1 不满意,因为每次添加新的 public 依赖项时我都必须下载。选项 2 可能是一个不错的选择 - 如果找不到其他选项,我可能会选择它。

任何输入建议将不胜感激。

更新:

OS: debian 10 python 版本 3.7.3 和 pip 版本 18.1

This works on Windows with python 3.9 and PIP 21.1.2 , i.e pip install my-private-package -f C:\path\to\private\package\directory

感谢指导@Matteo Zanoni。 问题是版本。当我将 pip 从 18.1 升级到 21.3.1

时,--find-link 起作用