将自定义.py文件打包到.exe中

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.pymy_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对我不起作用.

Sta*_*aly 3

我建议你使用cx_Freeze我认为最好的 python 代码捆绑器。

安装

安装非常简单,只需从官方 PyPi 软件包站点下载并安装这个cx_Freeze 安装程序(如果您使用的是 python 3.4,则为这个安装程序) 。完成后,打开cmd并运行python cxfreeze-postinstall

使用 cx_Freeze py 到 exe

最快的方法是在项目的父目录中打开命令提示符并运行cxfreeze <your .py script>. 这将创建一个 dist 文件夹,其中包含您的主程序及其导入的所有模块。

但是,如果您想更进一步并在使代码成为可执行文件时拥有更广泛的选项,您可以按照此处的setup.py说明进行创建,然后在 cmd 中运行。与之前的方法不同,此方法创建一个名为 的目录,其中包含另一个目录,该目录的名称与您正在编译的平台的名称相同。现在,里面有可执行文件和库。python setup.py buildbuild