我一直在努力解决这个问题一段时间,我甚至试着问这个问题here,但做得非常糟糕。从那以后,我开始明白发生了什么好转。我相信问题的根源在于,当我运行python setup.py [install|develop]
时,它会尝试使用easy_install而不是pip来实现依赖关系(install_requires)。setup.py可以使用pip而不是easy_install吗?
这听起来可能不是问题,但我运行自己的pypi服务器来存储这些依赖关系。我可以指定pip使用带有PIP_INDEX_URL环境变量的索引服务器。这在使用pip install
进行部署时工作正常,但在开发时,我想要使用setup.py develop
进行安装。从我所知道的,setup.py调用easy_install,它不关注这个环境变量,试图在pypi.python.org上找到我的包。我知道在命令行中,我可以为easy_install指定一个索引服务器,但在从setup.py隐式调用它时看不到任何方法。
我对pip没有遇到这个问题的事实感到困惑。当我pip install
这些模块之一,它运行我的包的setup.py,但从我的索引服务器拿起依赖关系。为什么setup.py在pip下运行时的行为与直接调用时相比有所不同?
在setup.py中指定dependency_links并不是一个好的答案,因为我希望我的环境确定要使用哪个pypi服务器(例如prod,test或dev)。
我的设置对我来说似乎并不奇怪,所以其他人肯定会遇到并解决这个问题。
我没有意识到,你可以直接通过pip直接安装,而无需先升级到服务器。这很棒。结合@detly建议的-e选项,这是完美的。非常感谢你们! – zenzic