PIP:如何级联需求文件和使用私有索引?

PIP: How to Cascade Requirements Files and Use Private Indexes?

我正在尝试将 Django 应用程序部署到 Heroku,其中一个必需的包位于 https://testpypi.python.org/pypi 上,当然 Django 在主 PyPI 服务器上。

我的设置是这样的。

# requirements.txt
-r requirements/req2.txt
-r requirements/req3.txt
# requirements/req2.txt
Django==1.7.7
# requirements/req3.txt
-i https://testpypi.python.org/pypi
foo-bar==0.4

运行 命令:pip install -r requirements.txt 导致以下错误。

Could not find any downloads that satisfy the requirement 
Django==1.7.7 (from -r ./requirements/req2.txt (line 2))
No distributions at all found for Django==1.7.7 
(from -r ./requirements/req2.txt (line 2))

所以在我看来,req3 中的 -i 参数正在设置,然后 pip 尝试在 testpypi 服务器上寻找 Django。

我尝试将 -i https://pypi.python.org/pypi 添加到 req2.txt,但我仍然遇到同样的错误。 (也许https://pypi.python.org/pypi是错误的url)

另外如果我运行或者req*.txt文件单独安装包是否成功?

如何级联需求文件并使用私有索引?

无可否认,this question and this one 非常相似,但都没有处理私有索引

原来处理私有索引的正确方法是使用--extra-index-url开关。来自 documentation of pip:

Note that using --index-url removes the use of PyPI, while using --extra-index-url will add additional indexes.

所以,放行

--extra-index-url https://testpypi.python.org/pypi

在你的 requirements.txt 之上应该足够了。完全不需要级联!