![](/img/trans.png)
[英]Python package "click" causes "Error: Got unexpected extra arguments (sdist bdist_wheel)" when used in new package
[英]Inconsistent behaviour of bdist vs sdist when distributing a Python package
我有一个具有以下结构的大项目。 实用程序是小模块的集合,这些小模块在各个地方都可以由big_project , project1,2等的不同组件重用。
big_project/
|-- __init__.py
|-- utilities/
|-- mod1.py
|-- mod2.py
|-- project1/
|-- setup.py
|-- __init__.py
|-- src/
|-- __init__.py
|-- mod1.py
|-- mod2.py
|-- examples/
|-- __init__.py
|-- mod.py
|-- project2/
|-- ...
|-- project3/
|-- ...
我想分发包括实用程序的 project1 (因为我不想单独分发实用程序 )。 分布式程序包将具有以下结构:
project1/
|-- utilities/
|-- src/
|-- examples/
和project1/setup.py
看起来像这样:
setup(
name = 'project1',
packages = ['project1.utilities', 'project1.src', 'project1.examples'],
package_dir = {'project1.utilities': '../utilities/',
'project1.src': 'src',
'project1.examples': 'examples'}
)
问题: python setup.py bdist
生成具有正确结构的发行版,但是python setup.py sdist
却没有:
bdist : project1-0.1.linux-x86_64.tar.gz
内容:
/./usr/local/lib/python2.7/site-packages/
|-- project1/
|-- utilities
|-- src
|-- examples
sdist : content of project1-0.1.tar.gz
:
project1/
|-- src/
|-- examples/
因此sdist忽略了实用程序模块,而bdist将其包含在正确的位置。 为什么?
如果有人想看一下真实的项目: https ://testpypi.python.org/pypi/microscopy,其中bsdist和sdist存档都可用。
setuptools和distutils产生相同的结果。 因为该项目是纯Python,所以我宁愿使用sdist ...
似乎可行的一种方法是使用bdist_wheel ,尽管其名称为纯Python,但其名称仍会产生与平台无关的源分发。 车轮被认为是新标准。
还需要告知setup.py
根软件包project1
,否则缺少project1.__init__.py
:
setup(
name = 'project1',
packages = ['project1'
'project1.utilities',
'project1.src',
'project1.examples'],
package_dir = {'project1': '.',
'project1.utilities': '../utilities/',
'project1.src': 'src',
'project1.examples': 'examples'}
)
接着
python2.7 setup.py bdist_wheel
我建议更新您的MANIFEST.in文件以包含实用程序文件夹
例如,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.