如何创建Pure-Python轮

sea*_*ugo 7 python setup.py 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',
    ],
)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行python setup.py bdist_wheel生成的wheel文件是平台特定的foo-0.0.1-cp27-none-macosx_10_9_x86_64.whlwheel文件而不是预期的foo-0.0.1-cp27-none-any.whl.当我尝试在另一个平台上安装这个轮子时,它无法说出来it is not compatible with this Python.

我需要改变一些关于setup.py文件或python解释器的东西,这可能会让这个轮子在任何平台上使用?

Ant*_*hon 10

简单的方法是添加--universal到命令行,正如您从运行中看到的那样python setup.py bdist_wheel --help:

  --universal       make a universal wheel (default: false)
Run Code Online (Sandbox Code Playgroud)

或者,您可以在setup.cfg旁边添加一个文件来setup.py处理:

[bdist_wheel]
universal = 1
Run Code Online (Sandbox Code Playgroud)

如果你不喜欢另一个破坏你的软件包的配置文件,你可以setup.py在调用之前在你的文件中编写这样的文件setup(),然后在该调用返回后将其删除,这就是setup.py我在PyPI上的所有项目的共享中所做的例如,用于ruamel.yaml.


sea*_*ugo 2

将分类器字段添加到我的 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',
    ],
)
Run Code Online (Sandbox Code Playgroud)