什么是 setup.py?
它是什么以及如何配置或使用?setup.py
setup.py
是一个python文件,它的存在表明您将要安装的模块/包可能已经与Distutils一起打包和分发,这是分发Python模块的标准。
这使您可以轻松安装Python包。通常,写以下内容就足够了:
$ pip install .
pip
将 用于安装您的模块。避免直接打电话。setup.py
setup.py
https://docs.python.org/3/installing/index.html#installing-index
它有助于在您的机器上安装python包(也可以在 中),以便您可以从其他项目以及[I]Python提示中导入该包。foo
virtualenv
foo
它做类似的工作点
,easy_install
等,
使用 setup.py
让我们从一些定义开始:
包 - 包含文件的文件夹/目录。模块 - 具有扩展名的有效python文件。分发 - 一个包如何与其他包和模块相关联。__init__.py
.py
假设您要安装一个名为 的软件包。然后你做,foo
$ git clone https://github.com/user/foo
$ cd foo
$ python setup.py install
相反,如果您不想实际安装它,但仍然想使用它。然后做,
$ python setup.py develop
此命令将在站点包中创建指向源目录的符号链接,而不是复制内容。因此,它非常快(特别是对于大型包裹)。
创建 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='foomail@foo.example',
packages=['foo'], #same as name
install_requires=['wheel', '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='foomail@foo.example',
packages=['foo'], #same as name
install_requires=['wheel', '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='foomail@foo.example',
url="http://www.foopackage.example/",
packages=['foo'], #same as name
install_requires=['wheel', 'bar', 'greek'], #external packages as dependencies
scripts=[
'scripts/cool',
'scripts/skype',
]
)
在 pypi.org 中用作包的自述文件说明。long_description
最后,您现在可以将软件包上传到 PyPi.org,以便其他人可以使用 安装您的软件包。pip install yourpackage
此时有两种选择。
一旦您的软件包名称在 pypi.org 中注册,任何人都无法声明或使用它。Python打包建议使用twine包用于上传目的(将包上传到PyPi)。因此
第一步是使用以下命令在本地构建发行版:
# prereq: wheel (pip install wheel)
$ python setup.py sdist bdist_wheel
然后 用于上传到 或 :twine
test.pypi.org
pypi.org
$ twine upload --repository testpypi dist/*
username: ***
password: ***
该包需要几分钟时间才会显示在 上。一旦你对它感到满意,你就可以把你的包上传到 pypi.org 的真实和永久索引,只需:test.pypi.org
$ twine upload dist/*
(可选)您还可以使用 by 对包中的文件进行签名:GPG
$ twine upload dist/* --sign
额外阅读:
在此处查看实际项目中的示例 setup.py
:torchvision-setup.py