Python setup.py开发与安装


336

在setup.py两个选项develop,并install混淆了我。根据此站点,使用develop创建到site-packages目录的特殊链接。

人们建议我使用python setup.py install全新安装,并且python setup.py develop对安装文件进行任何更改之后。

谁能阐明这些命令的用法?

Answers:


468

python setup.py install 用于安装(通常是第三方)您不会自行开发/修改/调试的软件包。

对于您自己的东西,您想要首先安装您的软件包,然后能够频繁编辑代码不必每次都重新安装该软件包-正是python setup.py develop这样:安装软件包(通常只是一个源文件夹)以某种方式可以让您在将代码安装到(虚拟)环境后方便地编辑代码,并使更改立即生效。

请注意,强烈建议使用pip install .(安装)和pip install -e .(开发人员安装)来安装软件包,因为setup.py直接调用将对许多依赖项(例如pull prereleases和不兼容的软件包版本)做错事,或者使软件包难以使用卸载pip


81
埃里克是对的。知道它也是有用setup.py develop--uninstall,当您完成黑客入侵时,它带有一个选项。
phil13年

5
最后想到的是,setup.py develop当黑客攻击python软件包时,另一种选择是使用“简单(但显式)路径修改来正确解析该软件包” re Kenneth Reitz
philadams

4
我在python setup.py develop尝试为本地开发设置Ceilometer时遇到了问题。我最终pip install -e PATH在virtualenv中使用了该代码,以避免通过出现的问题easy_install
Joe D'Andrea

1
不知道这是否重要,但是如果我使用的是python 3等,是否必须以python setup.py develop不同的方式运行?
查理·帕克

1
它可以在python3上运行,但不要忘记删除您可能拥有的任何当前pip安装,因为它们会相互冲突(此刻发生在我身上)。
莱奥Germond

124

文档中。该develop不会安装软件包,但它会创建一个.egg-link部署目录回项目源代码目录。

因此,这就像安装,而不是复制到其中,site-packages而是添加了一个符号链接(.egg-link充当多平台符号链接)。

这样,您可以编辑源代码并直接查看更改,无需在每次进行少量更改时都重新安装。如果您是该项目的开发者,因此很有用,名称为develop。如果您只是在安装别人的软件包,则应使用install


24

人们在使用该develop方法时可能会发现有用的另一件事是可以--user选择不使用sudo进行安装。例如:

python setup.py develop --user

代替

sudo python setup.py develop

11
IIUC,您永远都不应setup.py develop在系统中使用,这仅在virtualenv中才有意义。
Divybyzero

2
@dividebyzero python setup.py develop --user如果我理解正确,您是说应该一直使用吗?此外,您能告诉我使用软件包安装在哪里python setup.py develop --user吗?谢谢!
ROBOT AI

2
我认为--user它将安装在您的家庭帐户的目录中,并且不会影响系统中的其他用户。在develop将链接到您的项目源目录的实际复制的一切吧。develop --user应该可以,并且develop在virtualenv中也可以。仅对develop实际系统是很奇怪的,因为您可能会让其他用户在您的项目源代码的个人副本中使用指向该项目的内容。
除法零度'16

4
但是,许多人(大多数?)并未在多用户系统上运行
patstew

1
@boatcoder,Mac和Linux(和Windows)可能是多用户能力的系统,但最有可能的开发商是唯一的(真正的)用户自己的桌面的帐户,我相信这是pastew是什么意思。
MestreLion
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.