什么是setup.py,如何配置或使用它?


当前回答

setup.py是一个Python脚本,通常随库或程序一起提供,用该语言编写。其目的是正确安装软件。

许多软件包结合setup.py使用distutils框架。

http://docs.python.org/distutils/

其他回答

为了简单起见,当您调用安装函数时,setup.py会以“__main__”的形式运行,其他答案也会提到。在setup.py中,您应该放置安装软件包所需的一切。

常用setup.py函数

以下两个部分讨论了许多setup.py模块具有的两个功能。

设置工具。设置

此函数允许您指定项目属性,如项目名称、版本。。。。最重要的是,该功能允许您安装其他功能(如果它们打包正确)。有关setuptools.setup的示例,请参见此网页setuptools.setup的这些属性允许安装以下类型的软件包:

使用setuptools.findpackages导入到项目并在PyPI中列出的包:packages=find_packages(exclude=[“docs”,“tests”,”.gitignore“,”README.rst“,”DESCRIPTION.rst“])包不在PyPI中,但可以使用dependency_links从URL下载dependency_links=[“http://peak.telecommunity.com/snapshots/",]

自定义函数

在理想的世界中,setuptools.setup将为您处理一切。不幸的是,情况并非总是如此。有时,您必须执行特定的操作,例如使用subprocess命令安装依赖项,以使正在安装的系统处于适合您的包的正确状态。为了避免这种情况,这些功能会变得混乱,并且在操作系统甚至发行版之间经常会有所不同。

要安装已下载的Python包,请提取存档并在其中运行setup.py脚本:

python setup.py install

对我来说,这总是感觉很奇怪。像Ruby和Nodejs中那样,在下载时指向包管理器会更自然,例如geminstallrails-4.1.1.gem

包管理器也更舒适,因为它既熟悉又可靠。另一方面,每个setup.py都很新颖,因为它是特定于包的。它要求人们相信惯例“我相信这个setup.py使用的命令与我过去使用过的其他命令相同”。这对精神意志力是一种令人遗憾的负担。

我并不是说setup.py工作流不如包管理器安全(我理解Pip只是在里面运行setup.py),但我肯定觉得这是一个令人震惊的问题。所有命令都指向同一个包管理器应用程序,这是一种和谐。你甚至可能会喜欢它。

当您下载带有setup.py的软件包时,请打开终端(Mac、Linux)或命令提示符(Windows)。使用cd并帮助您使用Tab按钮,将路径设置为您下载文件的文件夹和setup.py所在的文件夹:

iMac:~ user $ cd path/pakagefolderwithsetupfile/

按回车键,您将看到如下内容:

iMac:pakagefolderwithsetupfile user$

然后在python setup.py安装之后键入:

iMac:pakagefolderwithsetupfile user$ python setup.py install

按enter键。完成!

setup.py是Python对多平台安装程序和make文件的回答。

如果您熟悉命令行安装,那么make&&makeinstall将转换为python setup.py build&&python setup.py install。

有些包是纯Python的,并且只进行字节编译。其他可能包含本机代码,这将需要本机编译器(如gcc或cl)和Python接口模块(如swig或pyrex)。

setup.py是一个python文件,它的存在表明您要安装的模块/包可能已经用Distutils打包和分发,Distutils是分发python模块的标准。

这允许您轻松安装Python包。通常,写下以下内容就足够了:

$ pip install . 

pip将使用setup.py安装模块。避免直接调用setup.py。

https://docs.python.org/3/installing/index.html#installing-索引