Crosscompile Python bdist_wininst可执行文件

时间:2016-06-07 11:14:01

标签: python cpu-architecture

我使用的是64位python3的64位Windows机器。我需要为windows 32bit机器构建一个可安装的软件包,并偶然发现了bdist功能的交叉编译功能:https://docs.python.org/3/distutils/builtdist.html

我正在使用像这样的setup.py:

from ez_setup import use_setuptools
use_setuptools()

from setuptools import setup, find_packages

setup(name='mypackage',
      version='1.0',
      description='Some Description',
      install_requires=['requests'],
      package_dir={'': 'src'},
      packages=[''],
      entry_points = {'console_scripts': ['somescript = foobar:main']},
      )

并像这样构建安装包:

python setup.py build --plat-name=win32 bdist_wininst --user-access-control auto
python setup.py build --plat-name=win-amd64 bdist_wininst --user-access-control auto

在这两种情况下,我都获得了指定体系结构的正确可执行格式,但安装后定义的console_script somescript无法执行。 python文档说我需要交叉编译整个python包用于windows - 但我不确定这是否是必要的,因为安装程序是用于正确的体系结构,并且在构建过程中我没有收到任何错误消息。 这个命令有问题吗?我是否真的需要交叉编译或者是否能够进行第二次32位python安装?

1 个答案:

答案 0 :(得分:0)

我发现这是一个报告错误https://github.com/pypa/setuptools/issues/253

setuptools仅检查操作系统体系结构,并忽略用于安装脚本的plat-name字符串。

解决方法(直到此问题关闭):使用目标体系结构构建wininst。