如何在 Ubuntu 上使用 py2exe(或 pyinstaller)创建 .exe
How to create .exe using py2exe(or pyinstaller) on Ubuntu
给定:
- Ubuntu
- py2exe 和 pyinstaller
- Python 带有 setup.py 的脚本(否则)
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 和 python 3.4 (https://askubuntu.com/questions/524399/issues-with-py2exe)
- 为 ubuntu "pip3 install py2exe"
设置 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
- 为 ubuntu (https://github.com/pyinstaller/pyinstaller/wiki)
设置 pyinstaller
- 运行 "pyinstaller setup.py"(与 "pyinstaller -w setup.py" 相同)并在 dist 文件夹中得到许多扩展名为 .so 的文件和一个没有扩展名 "setup" 的文件
我做错了什么?
如何获取 Ubuntu 下的 .exe 文件?
可能吗?
PS: 我已经阅读 Python executables: py2exe or PyInstaller? 我没有找到答案。
一般情况下,您不能在 Ubuntu 或 Linux 上使用 py2exe。您也不能在 Mac 上使用它。这是一个 Windows-only 实用程序!您必须在 Windows 中使用它,无论是在 Windows 虚拟机中还是在实际的 Windows 机器中。
关于PyInstaller,请阅读文档:
我可以使用 PyInstaller 作为交叉编译器吗?
我可以打包 Windows 二进制文件而 运行 在 Linux 下吗?
不,不支持。为此请使用 Wine,PyInstaller 在 Wine 中运行良好。您可能还想看看邮件列表中的这个线程。在 1.4 版中,我们内置了一些对此的支持,但它只显示了一半的工作。它需要在另一个分区上安装一些 Windows 系统,并且只适用于纯 Python 程序。一旦你想要一个像样的 GUI(gtk,qt,wx),你无论如何都需要安装 Windows 库。所以只使用 Wine 更容易。 - source
给定:
- Ubuntu
- py2exe 和 pyinstaller
- Python 带有 setup.py 的脚本(否则)
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 和 python 3.4 (https://askubuntu.com/questions/524399/issues-with-py2exe)
- 为 ubuntu "pip3 install py2exe"
设置 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
- 为 ubuntu (https://github.com/pyinstaller/pyinstaller/wiki)
设置 pyinstaller
- 运行 "pyinstaller setup.py"(与 "pyinstaller -w setup.py" 相同)并在 dist 文件夹中得到许多扩展名为 .so 的文件和一个没有扩展名 "setup" 的文件
我做错了什么?
如何获取 Ubuntu 下的 .exe 文件?
可能吗?
PS: 我已经阅读 Python executables: py2exe or PyInstaller? 我没有找到答案。
一般情况下,您不能在 Ubuntu 或 Linux 上使用 py2exe。您也不能在 Mac 上使用它。这是一个 Windows-only 实用程序!您必须在 Windows 中使用它,无论是在 Windows 虚拟机中还是在实际的 Windows 机器中。
关于PyInstaller,请阅读文档:
我可以使用 PyInstaller 作为交叉编译器吗?
我可以打包 Windows 二进制文件而 运行 在 Linux 下吗?
不,不支持。为此请使用 Wine,PyInstaller 在 Wine 中运行良好。您可能还想看看邮件列表中的这个线程。在 1.4 版中,我们内置了一些对此的支持,但它只显示了一半的工作。它需要在另一个分区上安装一些 Windows 系统,并且只适用于纯 Python 程序。一旦你想要一个像样的 GUI(gtk,qt,wx),你无论如何都需要安装 Windows 库。所以只使用 Wine 更容易。 - source