如何创建 Pure-Python 轮
How to create a Pure-Python wheel
从下面的 setup.py 文件中,我试图从一个应该只包含 python 2.7 代码的项目中创建一个纯 python 轮子。
from setuptools import setup
setup(
name='foo',
version='0.0.1',
description='',
url='',
install_requires=[
'bpython',
'Django==1.8.2',
],
)
但是,当我 运行 python setup.py bdist_wheel
时,生成的 wheel 文件是特定于平台的 foo-0.0.1-cp27-none-macosx_10_9_x86_64.whl
wheel 文件,而不是预期的 foo-0.0.1-cp27-none-any.whl
。当我尝试在不同的平台上安装这个轮子时,它没有显示 it is not compatible with this Python
.
我需要对 setup.py 文件或 python 解释器进行一些更改,也许这将使该轮子可以在任何平台上使用?
最简单的方法是将 --universal
添加到您的命令行,正如您可以从 运行 python setup.py bdist_wheel --help
:
中看到的
--universal make a universal wheel (default: false)
或者您可以在 setup.py
旁边添加一个 setup.cfg
文件
处理这个:
[bdist_wheel]
universal = 1
如果您不喜欢另一个配置文件破坏您的包,
你可以在 setup.py
调用 setup()
之前在你的 setup.py
中写入这样一个文件,然后在调用 returns 之后删除它,这就是我所做的
在共享 setup.py
for all my projects on PyPI e.g. used in ruamel.yaml.
将分类器字段添加到我的 setup.py 解决了这个问题。
from setuptools import setup
setup(
name='foo',
version='0.0.1',
description='',
url='',
classifiers=[
'Programming Language :: Python :: 2.7',
],
install_requires=[
'bpython',
'Django==1.8.2',
],
)
这部分文件名由名为 python tag 的 bdist_wheel
选项控制:
python2 setup.py bdist_wheel --help | grep python-tag
--python-tag Python implementation compatibility tag (default: 'py2')
但是默认值通常是 'py2'
(或 'py3'
对于 python3 运行时),因此要获得特定于平台的轮子,您的配置中必须有其他东西未在问题中显示。
无论如何,您可以在设置文件中明确指定标签:
from setuptools import setup
setup(
name="foo",
version="0.0.1",
...
options={"bdist_wheel": {"python_tag": "cp27"}},
)
此配置将创建一个名为 foo-0.0.1-cp27-none-any.whl
的轮子。
从下面的 setup.py 文件中,我试图从一个应该只包含 python 2.7 代码的项目中创建一个纯 python 轮子。
from setuptools import setup
setup(
name='foo',
version='0.0.1',
description='',
url='',
install_requires=[
'bpython',
'Django==1.8.2',
],
)
但是,当我 运行 python setup.py bdist_wheel
时,生成的 wheel 文件是特定于平台的 foo-0.0.1-cp27-none-macosx_10_9_x86_64.whl
wheel 文件,而不是预期的 foo-0.0.1-cp27-none-any.whl
。当我尝试在不同的平台上安装这个轮子时,它没有显示 it is not compatible with this Python
.
我需要对 setup.py 文件或 python 解释器进行一些更改,也许这将使该轮子可以在任何平台上使用?
最简单的方法是将 --universal
添加到您的命令行,正如您可以从 运行 python setup.py bdist_wheel --help
:
--universal make a universal wheel (default: false)
或者您可以在 setup.py
旁边添加一个 setup.cfg
文件
处理这个:
[bdist_wheel]
universal = 1
如果您不喜欢另一个配置文件破坏您的包,
你可以在 setup.py
调用 setup()
之前在你的 setup.py
中写入这样一个文件,然后在调用 returns 之后删除它,这就是我所做的
在共享 setup.py
for all my projects on PyPI e.g. used in ruamel.yaml.
将分类器字段添加到我的 setup.py 解决了这个问题。
from setuptools import setup
setup(
name='foo',
version='0.0.1',
description='',
url='',
classifiers=[
'Programming Language :: Python :: 2.7',
],
install_requires=[
'bpython',
'Django==1.8.2',
],
)
这部分文件名由名为 python tag 的 bdist_wheel
选项控制:
python2 setup.py bdist_wheel --help | grep python-tag
--python-tag Python implementation compatibility tag (default: 'py2')
但是默认值通常是 'py2'
(或 'py3'
对于 python3 运行时),因此要获得特定于平台的轮子,您的配置中必须有其他东西未在问题中显示。
无论如何,您可以在设置文件中明确指定标签:
from setuptools import setup
setup(
name="foo",
version="0.0.1",
...
options={"bdist_wheel": {"python_tag": "cp27"}},
)
此配置将创建一个名为 foo-0.0.1-cp27-none-any.whl
的轮子。