Xon*_*hiz 6 python py2exe pyinstaller python-2.7
我做了一个小项目,包括将各种python文件导入另一个python文件.这是我的目录结构.
Main_Folder
|_ my_main_file.py
|_ Sites (a directory inside Main_Folder)
|_ __init__.py
|_ some_other.py
Run Code Online (Sandbox Code Playgroud)
这基本上是我的目录结构.这some_other.py
是my_main_file.py
通过以下命令导入我的:
from Sites import *
我正在从该目录导入所有内容.所以,我想要做的是将整个项目变成一个独立的二进制文件.我使用pyintaller将我的.py
文件转换为.exe
.但是,我只编写了包含1个文件中所有内容的脚本,这使得任务变得简单.但是,这一次,我正在努力做一些新事物.
我的python脚本采用命令行参数,它正在工作.没有命令行参数,python脚本将无法工作.我可以转换为exe,但即使我提出参数,该exe也无所作为.
所以,我.spec
从pyinstaller 获得了一个文件并对其进行了修改以获取我的some_other.py
文件.SPEC文件如下所示:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['my_main_file.py'],
pathex=['C:\\Users\\User Name\\Main_Folder'],
binaries=None,
datas=[('Sites/*.py','Sites')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='my_main_file',
debug=False,
strip=False,
upx=True,
console=True )
Run Code Online (Sandbox Code Playgroud)
这使得一个.exe
,但该exe将无法工作.exe将不会显示任何内容.但是,它的大小就像11 MB.有什么事吗?我试过nuitka
,但是那个发出了一个关于无法找到的错误gendef.exe
,我对安装minGW并不感兴趣.
顺便说一句,我在64位机器上,py2exe bundle_file:1
对我不起作用.
我建议你使用cx_Freeze
我认为最好的 python 代码捆绑器。
安装非常简单,只需从官方 PyPi 软件包站点下载并安装这个cx_Freeze 安装程序(如果您使用的是 python 3.4,则为这个安装程序) 。完成后,打开cmd并运行python cxfreeze-postinstall
最快的方法是在项目的父目录中打开命令提示符并运行cxfreeze <your .py script>
. 这将创建一个 dist 文件夹,其中包含您的主程序及其导入的所有模块。
但是,如果您想更进一步并在使代码成为可执行文件时拥有更广泛的选项,您可以按照此处的setup.py
说明进行创建,然后在 cmd 中运行。与之前的方法不同,此方法创建一个名为 的目录,其中包含另一个目录,该目录的名称与您正在编译的平台的名称相同。现在,里面有可执行文件和库。python setup.py build
build