我构建了一个包(我们称之为mypackage),它依赖于 PyPi 上可用的知名第三方模块(即pandas)。我已将 mypackage 上传到自定义的类似 PyPi 的服务器 ( pypicustom ) 上。我正在努力将它安装在我只能访问 PyPi 镜像的环境中(我们称之为pypiproxy)。
pip install --index-url http://custompypi/ mypackage
Run Code Online (Sandbox Code Playgroud)
不起作用,因为显然找不到熊猫。
pip install --index-url http://pypiproxy/ --extra-index-url http://custompypi/ mypackage
Run Code Online (Sandbox Code Playgroud)
直到有人在 PyPi 上上传名为mypackage的包为止。
我能想到的最接近的是:
pip install --index-url http://custompypi/ --no-dependencies mypackage
pip install --index-url http://pypiproxy/ --extra-index-url http://custompypi/ mypackage
Run Code Online (Sandbox Code Playgroud)
这感觉不对。
任何想法?
我一直在使用对问题最接近的解决方案的增量改进。
假设两个包索引 URL 是A和B,您想要mypackage从哪里来A以及它的依赖项从哪里来B。在我的用例中,A是TestPyPI,B是 PyPI。
mypackage首先从不依赖的地方安装A,就像问题中一样:
$ pip install --no-deps --index-url 'A' mypackage
Run Code Online (Sandbox Code Playgroud)
B然后专门从with安装依赖项
$ pip install --index-url 'B' mypackage | grep 'Requirement already satisfied: mypackage' > /dev/null
Run Code Online (Sandbox Code Playgroud)
添加的内容grep可以让您断言没有尝试从pip install重新安装。如果在的输出中找不到,该命令将以状态 1 退出。这可以让您确定剩下的确实是来自 的命令。mypackageB'Requirement already satisfied: mypackage'pip installmypackageA
--extra-index-url 'A'我们还可以在第二个命令中省略,前提是它mypackage不依赖于A. pip install可以解决在配置的索引中找不到的已安装发行版的依赖关系。
如果您想保留第二个命令的标准输出(例如工作流日志),您可以在和之间添加一个管道tee /dev/tty。pip installgrep
| 归档时间: |
|
| 查看次数: |
3257 次 |
| 最近记录: |