谁能解释一下setup.py是什么,以及如何配置或使用它?
发布于 2009-09-24 14:19:35
setup.py是一个python文件,它的出现表明您将要安装的模块/包很可能已经随Distutils一起打包和分发了,Distutils是分发Python模块的标准。
这使您可以轻松安装Python包。通常,这样写就足够了:
$ pip install . pip将使用setup.py安装您的模块。避免直接调用setup.py。
https://docs.python.org/3/installing/index.html#installing-index
发布于 2016-10-02 06:04:49
在您的机器上安装python包foo (也可以在virtualenv中)会有所帮助,这样您就可以从其他项目和IPython提示符导入包foo。
它所做的工作类似于pip__,easy_install ,,
使用 setup.py的
让我们从一些定义开始:
Package -包含__init__.py文件的文件夹/目录。
模块-具有.py扩展名的有效python文件。
发行版--一个包与其他包和模块的关系。
假设您想要安装一个名为foo的包。那你就做吧
$ git clone https://github.com/user/foo
$ cd foo
$ python setup.py install相反,如果您不想实际安装它,但仍然想使用它。那就这么做,
$ python setup.py develop 此命令将在site-package中创建指向源目录的符号链接,而不是复制内容。正因为如此,它是相当快的(特别是对于大的包)。
创建 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.com',
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.com',
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.com',
url="http://www.foopackage.com/",
packages=['foo'], #same as name
install_requires=['wheel', 'bar', 'greek'], #external packages as dependencies
scripts=[
'scripts/cool',
'scripts/skype',
]
)long_description在pypi.org中用作包的自述文件描述。
最后,您现在可以将您的软件包上传到PyPi.org,以便其他人可以使用pip install yourpackage安装您的软件包。
在这一点上有两个选择。
一旦您的包名称在pypi.org中注册,任何人都不能声明或使用它。用于(将您的包上传到PyPi)的Python packaging suggests the package。因此,
(1)第一步是使用以下命令在本地构建发行版:
# prereq: wheel (pip install wheel)
$ python setup.py sdist bdist_wheel (2)然后使用twine上传到test.pypi.org或pypi.org:
$ twine upload --repository testpypi dist/*
username: ***
password: *** 程序包需要几分钟才能显示在test.pypi.org上。一旦你对它感到满意,你就可以简单地将你的包上传到pypi.org的real & permanent索引:
$ twine upload dist/* 或者,您也可以通过以下方式使用GPG对包中的文件进行签名:
$ twine upload dist/* --sign 奖励阅读
在这里查看来自真实项目的示例setup.py:
发布于 2009-09-24 15:29:09
setup.py是Python对多平台安装程序和make文件的回应。
如果您熟悉命令行安装,那么可以将make && make install转换为python setup.py build && python setup.py install。
一些包是纯Python的,并且只是字节编译的。其他可能包含本机代码,这将需要一个本机编译器(如gcc或cl)和Python接口模块(如swig或pyrex)。
https://stackoverflow.com/questions/1471994
复制相似问题