Jef*_*eff 611 python executable
我正在构建一个Python应用程序,不想强迫我的客户端安装Python和模块.我也想让我的应用程序闭源.
那么,有没有办法将Python脚本编译为独立的可执行文件?
Rum*_*kin 244
您可以使用PyInstaller将Python程序打包为独立的可执行文件.它适用于Windows,Linux和Mac.
PyInstaller快速入门
从PyPI安装PyInstaller:
Run Code Online (Sandbox Code Playgroud)pip install pyinstaller转到程序的目录并运行:
Run Code Online (Sandbox Code Playgroud)pyinstaller yourprogram.py这将在名为的子目录中生成包
dist.有关更详细的演练,请参阅手册.
neu*_*ino 214
您可以使用已经回答的py2exe并使用cython将您的密钥.py文件转换为.pycC编译文件,比如.dll在Windows和.soLinux中,比普通文件.pyo和.pyc文件更难恢复(并且还可以获得性能!)
cda*_*rke 77
您可能希望调查 Nuitka.它需要python源代码并将其转换为C++ API调用.然后它编译成可执行的二进制文件(Linux上的ELF).它已经存在了几年,并支持各种Python版本.
如果使用它,您可能也会获得性能提升.推荐的.
Die*_*ego 27
我想编译一些有关使用Python 2.7在Windows上创建独立文件的有用信息.
我使用过py2exe它可以工作,但我遇到了一些问题.
它显示了在Windows 64位中创建单个文件的一些问题:使用bundle_files = 1和py2exe不起作用 ;
有必要创建一个setup.py文件以使其工作.http://www.py2exe.org/index.cgi/Tutorial#Step2 ;
我遇到了必须通过在安装文件中导入包来解决的依赖项问题;
我无法与PyQt一起工作..
最后一个原因让我尝试了PyInstaller http://www.pyinstaller.org/.
在我看来,它更好,因为:
我建议使用以下行创建一个.bat文件(pyinstaller.exe必须在Windows路径中):
pyinstaller.exe --onefile MyCode.py
Run Code Online (Sandbox Code Playgroud)
您可以创建单个文件以及其他选项(https://pyinstaller.readthedocs.io/en/stable/usage.html#options).
使用PyInstaller和多处理程序包只有一个问题,使用这个方法解决了这个问题:https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing.
所以,我认为,至少对于python 2.7,更好更简单的选择是PyInstaller.
fur*_*lay 23
是的,可以将Python脚本编译为独立的可执行文件.
PyInstaller可用于在Windows,Linux,Mac OS X,FreeBSD,Solaris和AIX下将Python程序转换为独立的可执行文件.它是推荐的转换器之一.
py2exe将Python脚本转换为Windows平台中的可执行文件.
Cython是Python编程语言和扩展的Cython编程语言的静态编译器.
Cha*_*uad 21
pyinstaller yourfile.py -F --onefile
Run Code Online (Sandbox Code Playgroud)
这会在 Windows 上创建一个独立的 EXE 文件。
重要说明 1:EXE 文件将在名为“dist”的文件夹中生成。
重要说明 2:不要忘记 --onefile 标志
您可以使用安装 PyInstaller pip install PyInstaller
注意:在极少数情况下,存在隐藏的依赖项...因此,如果您运行 EXE 文件并出现缺少库错误(在下面的示例中为 win32timezone),请使用以下内容:
pyinstaller --hiddenimport win32timezone -F "Backup Program.py"
Run Code Online (Sandbox Code Playgroud)
Ana*_*and 14
使用py2exe ....使用下面的设置文件:
from distutils.core import setup
import py2exe
from distutils.filelist import findall
import matplotlib
setup(
console=['PlotMemInfo.py'],
options={
'py2exe': {
'packages' : ['matplotlib'],
'dll_excludes': ['libgdk-win32-2.0-0.dll',
'libgobject-2.0-0.dll',
'libgdk_pixbuf-2.0-0.dll']
}
},
data_files = matplotlib.get_py2exe_datafiles()
)
Run Code Online (Sandbox Code Playgroud)
小智 8
对于Python 3.2脚本,唯一的选择是Cxfreeze.从源代码构建它,否则它将无法工作.
对于python 2.x我建议使用pyinstaller,因为它可以将python程序打包在一个可执行文件中,这与CxFreeze不同,它也输出库.
py2exe将生成您想要的exe文件,但您需要在将要使用新exe的机器上安装相同版本的MSVCR90.dll.有关详细信息,请参阅http://www.py2exe.org/index.cgi/Tutorial.
您可以找到@ https://wiki.python.org/moin/DistributionUtilities列出的分发实用程序列表.
我使用bbfreeze并且它一直运行良好(但仍然支持python 3).
使用Cython转换为 C、编译并与 GCC 链接。
另一种可能是,用 C 语言编写核心函数(您想要使其难以逆转的函数),编译它们并使用Boost.Python导入编译后的代码(而且您可以获得更快的代码执行速度)。然后使用提到的任何工具进行分发。
我喜欢pyinstaller-尤其是“窗口式”变体:
pyinstaller --onefile --windowed myscript.py
Run Code Online (Sandbox Code Playgroud)
它将在dist /文件夹中创建一个单个* .exe文件。
使用PyInstaller,我找到了一种更好的方法,使用 .exe 的快捷方式而不是制作--onefile. 不管怎样,周围可能有一些数据文件,如果您正在运行基于站点的应用程序,那么您的程序也依赖于 HTML、JavaScript 和 CSS 文件。将所有这些文件移动到某个地方没有任何意义...相反,如果我们将工作路径向上移动怎么办?
创建 EXE 文件的快捷方式,将其移动到顶部并按指定设置目标和起始路径,以使相对路径指向dist\\folder:
\nTarget: %windir%\\system32\\cmd.exe /c start dist\\web_wrapper\\web_wrapper.exe\nStart in: "%windir%\\system32\\cmd.exe /c start dist\\web_wrapper\\"\nRun Code Online (Sandbox Code Playgroud)\n我们可以将快捷方式重命名为任何名称,因此重命名为“GTFS-Manager”。\n现在,当我双击快捷方式时,就好像我python运行了该文件一样!我发现这种方法比--onefile 以下方法更好:
python3 myfile.py)和 Windows(双击快捷方式)上使用这个完全相同的文件夹。哦,记得在构建后删除构建文件夹。它将节省尺寸。
\n由于当前的答案列表中似乎缺少它,我认为值得一提的是,标准库包含一个zipapp可用于此目的的模块。它的基本用法只是压缩了一堆Python文件与扩展名的zip文件.pyz比可以作为直接执行python myapp.pyz,但你也可以从一个做一个独立的程序包requirements.txt文件:
$ python -m pip install -r requirements.txt --target myapp
$ python -m zipapp -p "interpreter" myapp
Run Code Online (Sandbox Code Playgroud)
哪里interpreter可以是类似的/usr/bin/env python(见指定解释器)。
通常,生成的.pyz/.pyzw文件应该是可执行的,在 Unix 中因为它被标记为这样,在 Windows 中因为 Python 安装通常会注册这些扩展。但是,制作一个只要用户python3.dll在路径中就可以工作的 Windows 可执行文件相对容易。
如果您不想要求最终用户安装 Python,则可以将应用程序与可嵌入的 Python 包一起分发。
| 归档时间: |
|
| 查看次数: |
721183 次 |
| 最近记录: |