尝试从一个空项目创建一个轮子,使用这个setup.py
:
setup.py
from setuptools import setup
setup(name='bla', version='1')
我调用python setup.py bdist_wheel --python-tag py35 --plat-name linux_x86_64
并得到bla-1-py35-none-linux_x86_64.whl
我的机器统计
python -V: Python 3.6.9
uname -p: x86_64
- 如何执行abi? (做了bla-1-py35-cp35-linux_x86_64.whl)
- 如何在我的 python 标签中决定 py35 和 cp35 之间?
经过我自己的大量搜索,我终于找到了一个可行的解决方案“pip setup.py bdist_wheel”不再构建强制的非纯轮子 https://stackoverflow.com/questions/35112511/pip-setup-py-bdist-wheel-no-longer-builds-forced-non-pure-wheels
基本上,如果 setup.py 认为您有一个二进制发行版,它将使用特定版本的 python、ABI 和当前架构创建一个轮子。您可以通过覆盖 Distribution 类中的“has_ext_modules”函数来做到这一点。正如建议的https://stackoverflow.com/users/5316090/py-j https://stackoverflow.com/users/5316090/py-j:
from setuptools import setup
from setuptools.dist import Distribution
DISTNAME = "packagename"
DESCRIPTION = ""
MAINTAINER = ""
MAINTAINER_EMAIL = ""
URL = ""
LICENSE = ""
DOWNLOAD_URL = ""
VERSION = '1.2'
PYTHON_VERSION = (2, 7)
# Tested with wheel v0.29.0
class BinaryDistribution(Distribution):
"""Distribution which always forces a binary package with platform name"""
def has_ext_modules(foo):
return True
setup(name=DISTNAME,
description=DESCRIPTION,
maintainer=MAINTAINER,
maintainer_email=MAINTAINER_EMAIL,
url=URL,
license=LICENSE,
download_url=DOWNLOAD_URL,
version=VERSION,
packages=["packagename"],
# Include pre-compiled extension
package_data={"packagename": ["_precompiled_extension.pyd"]},
distclass=BinaryDistribution)
然后,您可以从所需的任何 Python 版本/架构运行 setup.py 文件,它将为每个版本/架构创建一个特定于平台的轮子。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)