setup.py
是一个 python 文件,它通常告诉您要安装的模块 / 包已经与 Distutils 一起打包和分发,这是分发 Python 模块的标准。
这使您可以轻松安装 Python 包。通常它写得足够:
$ python setup.py install
并且模块将自行安装。
https://docs.python.org/3/installing/index.html#installing-index
它有助于在您的机器上安装 python 包foo
(也可以在virtualenv
),以便您可以从其他项目以及 [I] Python 提示中导入包foo
。
它完成了与pip
, easy_install
等类似的工作,
使用setup.py
让我们从一些定义开始:
包 - 包含__init__.py
文件的文件夹 / 目录。
Module - 扩展名为.py
有效 python 文件。
分发 - 一个包与其他包和模块的关系 。
假设您要安装名为foo
的包。那你呢,
$ git clone https://github.com/user/foo
$ cd foo
$ python setup.py install
相反,如果您不想实际安装它但仍想使用它。然后做,
$ python setup.py develop
此命令将为 site-packages 中的源目录创建符号链接,而不是复制内容。因此,它非常快(特别是对于大型包装)。
创建setup.py
如果你有你的包树,
foo
├── foo
│ ├── data_struct.py
│ ├── __init__.py
│ └── internals.py
├── README
├── requirements.txt
└── setup.py
然后,在setup.py
脚本中执行以下操作,以便可以在某台计算机上安装它:
from setuptools import setup
setup(
name='foo',
version='1.0',
description='A useful module',
author='Man Foo',
author_email='[email protected]',
packages=['foo'], #same as name
install_requires=['bar', 'greek'], #external packages as dependencies
)
相反,如果您的包树更复杂,如下所示:
foo
├── foo
│ ├── data_struct.py
│ ├── __init__.py
│ └── internals.py
├── README
├── requirements.txt
├── scripts
│ ├── cool
│ └── skype
└── setup.py
那么,在这种情况下你的setup.py
就像:
from setuptools import setup
setup(
name='foo',
version='1.0',
description='A useful module',
author='Man Foo',
author_email='[email protected]',
packages=['foo'], #same as name
install_requires=['bar', 'greek'], #external packages as dependencies
scripts=[
'scripts/cool',
'scripts/skype',
]
)
添加更多东西到( setup.py
)并使其体面:
from setuptools import setup
with open("README", 'r') as f:
long_description = f.read()
setup(
name='foo',
version='1.0',
description='A useful module',
license="MIT",
long_description=long_description,
author='Man Foo',
author_email='[email protected]',
url="http://www.foopackage.com/",
packages=['foo'], #same as name
install_requires=['bar', 'greek'], #external packages as dependencies
scripts=[
'scripts/cool',
'scripts/skype',
]
)
long_description
在pypi.org 中用作包的 README 描述。
最后,您现在已准备好将您的软件包上传到PyPi.org,以便其他人可以使用pip install yourpackage
安装您的软件包。
第一步是使用以下方法在 pypi 中声明您的包裹名称和空间:
$ python setup.py register
一旦您的包裹名称被注册,没有人可以声明或使用它。注册成功后,您必须将包裹上传到云端(到云端),
$ python setup.py upload
或者,您也可以使用GPG
为您的包裹签名,
$ python setup.py --sign upload
额外奖励 :请在此处查看真实项目中的setup.py
示例: torchvision-setup.py
setup.py
是 Python 对多平台安装程序和make
文件的回答。
如果您熟悉命令行安装,那么make && make install
转换为python setup.py build && python setup.py install
。
有些包是纯 Python,只是字节编译。其他可能包含本机代码,这将需要本机编译器(如gcc
或cl
)和 Python 接口模块(如swig
或pyrex
)。