如何在Ubuntu上使用py2exe(或pyinstaller)创建.exe

Yur*_*nov 6 python windows ubuntu py2exe pyinstaller

鉴于:
- Ubuntu
- py2exe和pyinstaller - 使用setup.py(或其他)的Python脚本

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"]
}}
)
Run Code Online (Sandbox Code Playgroud)

需要:
- 一个.exe文件,也许一些.dll(我真的不知道)

我做的步骤:
- 设置pip3和python 3.4(https://askubuntu.com/questions/524399/issues-with-py2exe)
- 为ubuntu安装py2exe"pip3安装py2exe"
- 运行"python3.4 setup.py py2exe "并得到以下追溯:

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
Run Code Online (Sandbox Code Playgroud)


- 为ubuntu安装pyinstaller(https://github.com/pyinstaller/pyinstaller/wiki)
- 运行"pyinstaller setup.py"(与"pyinstaller -w setup.py"相同)并在dist文件夹中获取许多带扩展名的文件.所以和一个文件"设置"没有扩展名

我究竟做错了什么?
如何在Ubuntu下获取.exe文件?
可能吗?

PS:我读过Python可执行文件:py2exe或PyInstaller?我没有找到答案.

Mik*_*oll 7

一般来说,你不能在Ubuntu或Linux上使用py2exe.你不能在Mac上使用它.它是一个仅限Windows的实用程序!您必须在Windows中使用它,无论是在Windows虚拟机还是实际的Windows机器中.

至于PyInstaller,请阅读文档:

我可以使用PyInstaller作为交叉编译器吗?

  • 我可以在Linux下运行时打包Windows二进制文件吗?

    不,这不受支持.请使用Wine,PyInstaller在Wine中运行良好.您可能还想查看邮件列表中的此主题.在1.4版本中,我们已经为此建立了一些支持,但它只显示了一半.它需要在另一个分区上安装一些Windows系统,并且只适用于纯Python程序.只要你想要一个像样的GUI(gtk,qt,wx),你无论如何都需要安装Windows库.因此,使用Wine更容易.- 来源