2016-06-07 3 views
0

Я использую 64-битную Windows-машину с 64-битным python3. Мне нужно построить устанавливаемый пакет для Windows 32bit машины и наткнулся на поперечную особенности компиляции признака bdist: https://docs.python.org/3/distutils/builtdist.htmlCrosscompile Python bdist_wininst executeables

Я использую 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 для окон - но я не уверен, что это даже необходимо, потому что установщик был для правильной архитектуры, и я не получил сообщения об ошибке во время процесса сборки. С командой что-то не в порядке? Нужно ли мне перекрещиваться, или это достаточно, чтобы иметь вторую 32-битную установку python?

ответ

0

Как я выяснил, что это ошибка сообщается https://github.com/pypa/setuptools/issues/253

В Setuptools сделать проверку только для архитектуры ОС и игнорировать имя-наличник строку для установки скриптов.

Временное решение (пока этот вопрос не будет закрыт): Используйте целевую архитектуру для построения wininst.

Смежные вопросы