我一直试图解决这个问题,甚至尝试在这里提问,但效果不佳。现在我对情况有了更清楚的了解,我相信问题的根源在于当我运行
我更加困惑的是pip并没有遇到这个问题。当我
在setup.py中指定dependency_links并不是一个好答案,因为我希望我的环境决定使用哪个pypi服务器(例如prod、test或dev)。
我的配置对我来说似乎并不奇怪,所以肯定有其他人遇到并解决了这个问题。
python setup.py [install|develop]
时,它会尝试使用easy_install而不是pip来满足依赖项(即install_requires)。
这可能听起来不像问题,但我在自己运行的pypi服务器上存储这些依赖项。我可以使用PIP_INDEX_URL环境变量指定pip使用我的索引服务器。在部署时使用pip install
很好用,但在开发时,我想使用setup.py develop
来安装。据我所知,setup.py调用easy_install,它并不关心这个环境变量,试图在pypi.python.org上找到我的包。我知道从命令行中可以指定一个index server给easy_install,但在setup.py被隐式调用时,我看不出有什么办法去做这件事。我更加困惑的是pip并没有遇到这个问题。当我
pip install
其中之一的模块时,它会为我的包运行setup.py,但从我的索引服务器获取依赖项。为什么当我直接调用setup.py时,它的行为与在pip下运行时不同呢?在setup.py中指定dependency_links并不是一个好答案,因为我希望我的环境决定使用哪个pypi服务器(例如prod、test或dev)。
我的配置对我来说似乎并不奇怪,所以肯定有其他人遇到并解决了这个问题。
pip
并不是setuptools
的包装器。我真心希望它是,但事实并非如此。它会自行完成所有安装和其他操作,这导致其行为与setuptools
不同。 - wvxvw