2016-06-07 5 views
0

Ich benutze eine 64-Bit-Windows-Maschine mit 64-Bit-Python3. Ich brauche eine installierbare Paket für eine Windows 32-Bit-Maschine zu bauen und stolperte über die Cross-Compiler Merkmal der bdist Funktion: https://docs.python.org/3/distutils/builtdist.htmlCrosscompile Python bdist_wininst ausführbare Dateien

Ich bin mit einem setup.py wie folgt aus:

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']}, 
    ) 

und bauen die installieren von Paketen wie so:

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 

In beiden Fällen habe ich das richtige executeable Format für die angegebene Architektur, sondern die definierte console_script somescript nach der Installation nicht executeable wurde. Die Python-Dokumentation sagt, dass ich das ganze Python-Paket für Windows kompilieren muss - aber ich bin unsicher, ob das überhaupt nötig ist, weil das Installationsprogramm für die richtige Architektur war und ich während des Build-Prozesses keine Fehlermeldung bekam. Stimmt etwas nicht mit dem Befehl? Muss ich wirklich crosscompile oder ist es ausreichend, eine zweite 32-Bit-Installation von Python zu haben?

Antwort

0

Als ich herausfand, ist dies ein Fehler gemeldet https://github.com/pypa/setuptools/issues/253

Die Setuptools nur für die OS-Architektur überprüfen und den für die Installation von Skripten plat-namen Zeichenfolge ignorieren.

Problemumgehung (bis dieses Problem behoben ist): Verwenden Sie die Zielarchitektur zum Erstellen von wininst.