Python setup.py是否可以使用pip而不是easy\u安装?

Python setup.py是否可以使用pip而不是easy\u安装?,python,pip,easy-install,Python,Pip,Easy Install,一段时间以来,我一直在努力解决这个问题,我甚至试着问这个问题,但做得相当糟糕。从那以后,我对发生的事情有了更好的了解。我认为问题的根源在于,当我运行python setup.py[install | develope]时,它试图使用easy_install而不是pip来实现依赖关系(install_requires) 这听起来可能不是个问题,但我运行自己的pypi服务器,存储这些依赖项。我可以指定pip将我的索引服务器与pip_index_URL环境变量一起使用。当使用pip-install部署

一段时间以来,我一直在努力解决这个问题,我甚至试着问这个问题,但做得相当糟糕。从那以后,我对发生的事情有了更好的了解。我认为问题的根源在于,当我运行
python setup.py[install | develope]
时,它试图使用easy_install而不是pip来实现依赖关系(install_requires)

这听起来可能不是个问题,但我运行自己的pypi服务器,存储这些依赖项。我可以指定pip将我的索引服务器与pip_index_URL环境变量一起使用。当使用
pip-install
部署时,这很好,但是在开发时,我希望使用
setup.py-develope
方便地安装。据我所知,setup.py调用easy_install,它不注意这个环境变量,试图在pypi.python.org上找到我的包。我知道,通过命令行,我可以为easy_install指定一个索引服务器,但是当从setup.py隐式调用它时,我看不到这样做的方法

pip没有遇到这个问题,这让我更加困惑。当我
pip安装这些模块中的一个时,它会为我的包运行setup.py,但会从我的索引服务器获取依赖项。为什么setup.py在pip下运行时的行为与我直接调用它时的行为不同

在setup.py中指定dependency_links不是一个好答案,因为我希望我的环境确定要使用哪个pypi服务器(例如prod、test或dev)


我的设置对我来说并不奇怪,所以其他人肯定已经遇到并解决了这个问题。

您可能对pip感兴趣,它使用
-e
标志指定:

“可编辑”安装基本上是“setuptools开发模式”安装

对于本地项目,“SomeProject.egg info”目录是相对于项目路径创建的。这是比仅使用setup.py develope的一个优势,它直接相对于当前工作目录创建“egg info”

为什么setup.py在pip下运行时的行为与我直接调用它时的行为不同

PIP\u INDEX\u URL
环境变量是一个
PIP
功能

您的
setup.py
文件使用的
setuptools
不知道
PIP\u INDEX\u URL

我建议使用:

PIP_INDEX_URL=http://yourpypi/ pip install .
而不是

python setup.py install

这并没有真正回答我的问题,因为我仍然不知道如何让setup.py使用pip而不是easy_安装。然而,我确实找到了解决问题的办法。通过在
~/.pydistutils
文件中指定,可以强制easy_install使用您选择的索引服务器。比如:

[easy_install]
index_url = http://pypi.my_domain.org/simple

谢谢我来试一试。我不知道你可以通过pip直接安装,而不需要先转移到服务器上。这太棒了。结合@detly建议的-e选项,这是完美的。非常感谢你们两位
pip
不是
setuptools
的包装器。我真希望是这样,但事实并非如此。它自己完成所有的安装和类似的事情,这确实会导致与
setuptools
不同的行为。