2015-09-11 3 views
3

Дано:
- Ubuntu
- py2exe и pyinstaller - Python скрипт с setup.py (или еще)Как создать .exe с помощью py2exe (или pyinstaller) на Ubuntu

from distutils.core import setup 
import py2exe 
import os 

setup(
version = "1.0", 
description = 'foo', 
url = "", 
name = "foo", 
console=[{ 
    "script":"main.py", 
    "dest_base":"foo", 
}], 
zipfile = "shared.dll", 
options = {"py2exe":{ 
    'bundle_files': 1, 
    'optimize': 2, 
    "dll_excludes": ['MSVCP90.dll', 'msvcr71.dll', "IPHLPAPI.DLL", "NSI.dll", "WINNSI.DLL", "WTSAPI32.dll"], 
    "includes": ["utils"] 
}} 
) 

Потребность:
- один EXE-файл и, возможно, некоторые .dll (я действительно не знаю)

шаги, что я сделал:
- установка PIP3 и питона 3,4 (https://askubuntu.com/questions/524399/issues-with-py2exe)
- установка py2exe для убунту "PIP3 установить py2exe"
- запустить "python3.4 setup.py py2exe" И получил следующие TRACEBACK:

Traceback (most recent call last): 
    File "setup.py", line 2, in <module> 
    import py2exe 
    File "/usr/local/lib/python3.4/dist-packages/py2exe/__init__.py", line 9, in <module> 
    patch_distutils() 
    File "/usr/local/lib/python3.4/dist-packages/py2exe/patch_distutils.py", line 68, in patch_distutils 
    from . import distutils_buildexe 
    File "/usr/local/lib/python3.4/dist-packages/py2exe/distutils_buildexe.py", line 91, in <module> 
    from . import runtime 
    File "/usr/local/lib/python3.4/dist-packages/py2exe/runtime.py", line 3, in <module> 
    from .dllfinder import Scanner, pydll 
    File "/usr/local/lib/python3.4/dist-packages/py2exe/dllfinder.py", line 5, in <module> 
    from . import _wapi 
    File "/usr/local/lib/python3.4/dist-packages/py2exe/_wapi.py", line 4, in <module> 
    _kernel32 = WinDLL("kernel32") 
NameError: name 'WinDLL' is not defined 


- настройки pyinstaller для убунту (https://github.com/pyinstaller/pyinstaller/wiki)
- запустите «pyinstaller setup.py» (так же, как «pyinstaller -w setup.py») и достал в dist папку много файлов с расширением .so и одним файлом «setup» без расширения

Что я делаю неправильно?
Как я могу получить файл .exe под Ubuntu?
Возможно ли это?

PS: Я читал Python executables: py2exe or PyInstaller? не нашел ответа.

+1

Почему вы хотите создать '.exe' файл на Ubuntu? Не будет ли лучше делать это на Windows? – ForceBru

+0

Я хочу создать .exe на Ubuntu и потянуть на машину Windows. Да, его можно создать в Windows, но не в моем случае (не спрашивайте меня, почему) –

+0

Если бы я был вами, я бы использовал виртуальную машину. Если это не вариант, попробуйте установить windows python в вине. Вы бы убили много времени, если попытаетесь сделать это любым другим способом. –

ответ

2

Вы не можете использовать py2exe для Ubuntu или Linux в целом. Вы также не можете использовать его на Mac. Это Windows-only утилита! Вы должны использовать его в Windows, будь то на виртуальной машине Windows или на реальной машине Windows.

Что касается PyInstaller, пожалуйста, прочитайте документацию:

Могу ли я использовать PyInstaller как кросс-компилятор?

  • Могу ли я упаковать двоичные файлы Windows, в то время как работает под Linux?

    Нет, это не поддерживается. Пожалуйста, используйте Wine для этого, PyInstaller отлично работает в Wine. Вы также можете посмотреть этот поток в списке рассылки. В версии 1.4 мы использовали некоторую поддержку для этого, но показали, что она работает только наполовину. Это потребует некоторой системы Windows на другом разделе и будет работать только для чистых программ Python. Как только вы захотите создать достойный графический интерфейс (gtk, qt, wx), вам все равно потребуется установить библиотеки Windows. Так что гораздо проще просто использовать Wine. - source

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