我认为这是一个简单的问题,但我还没有找到答案,所以我在这里发帖。
我有一个Python 3应用程序,我打包成一个平台轮。我有setup.py,一切都按预期工作。我唯一能做的就是生成的轮子总是包含一个ABI标签(比如" cp34m"),当包含它时我发现我实际上无法安装轮子通过点子。 (我的构建脚本在运行之前会安装最新的pip,setuptools和wheel。)
解决方案很简单。我只是改变了轮子的文件名来改变" cp34m"到"无"。这显然很容易添加到我的构建脚本中,但我想知道是否可以为bdist_wheel设置一个选项,以便生成的.whl文件没有自己设置?
我用来创建滚轮的命令是(例如在x64上):
python setup.py bdist_wheel --plat-name win_amd64
这样就形成了一个轮子:
mpf_mc-0.30.0.dev269-cp34-cp34m-win_amd64.whl
然后我在上传到PyPI之前重命名为:
mpf_mc-0.30.0.dev269-cp34-none-win_amd64.whl
通过手动重命名,一切似乎都能正常工作。但我想知道这是否是正确的方法,或者我错过了什么?
答案 0 :(得分:1)
如果不查看您的setup.py
文件,很难回答这个问题,但是我会考虑的:
m
,这意味着{{3 }}。所以,我猜想当您使用原始名称并在更改名称后可以正常工作时无法工作的原因是
pip
不允许您使用ABI标签的m
部分来安装东西... 可能,因为它尚未经过审查,也不是因为任何真实的问题和/或malloc
的Cython的任何方面。现在,如果像我说的那样,假设我们并不需要m
标记,那么可能添加它的原因是安装文件中有一个需要它的依赖项。 / p>
我主要是一名数据科学家,所以我将使用一个常见的示例:numpy
被编译为C代码,并且有许多使用该较低级语言的Python调用来提高速度。即使我编写了纯Python 3代码,甚至都不在任何地方使用numpy
,如果我的安装文件中有一个要求numpy
的依赖项,那么我将特定于平台的版本。但是,更常见的是实际上我正在使用numpy
,但是我可能没有使用依赖C的任何方面。(在numpy
中,这很罕见,因为所有数组初始化都在C,但我希望您能明白。)我不知道是什么推动了ABI特定的构建,但是我猜您有一些依赖要求,但是从未真正使用过。
答案 1 :(得分:0)
自从您发布问题后,似乎已经发生了一些变化 - 我只是尝试使用您的命令在我自己的项目中创建一个滚轮文件:
~$ python setup.py bdist_wheel --plat-name win_amd64
,结果文件为:
my_project-1.0.0-py2-none-win_amd64.whl