我真的需要帮助。我已经使用PyQt5在Python中编写了GUI。现在,我想将我的文件/文件转换为.exe文件,因此无需先安装Python就可以使用它。
我现在在互联网上搜索了将近三个半小时,同时试图解决我的问题,但是没有任何效果。我不了解PyInstaller文档,互联网上没有其他已回答的问题对我有帮助。
我有七个Python文件(面向编程对象)。主程序和模块。如何在不安装Python的情况下使该程序正常运行(分别如何将它们转换为.exe?)
我正在使用Windows 10,安装了Python 3.5,PyQt5和PyInstaller 3.3.1。
非常感谢您的帮助!
我的.spec文件目前看起来像这样:
FROM rocker/r-ver:3.5.1
#install necessary libraries
RUN R -e "install.packages(c('ggplot2','shiny'))"
COPY . /usr/local/src/app
WORKDIR /usr/local/src/app
CMD ["Rscript","app_run.R"]
运行后我的错误:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['MainFile.py', 'module1.py', 'module2.py', 'module3.py', 'module4.py', 'module5.py', 'module6.py'],
pathex=['C:\\Users\\MyName\\Documents\\ProgramFolder'],
binaries=[],
datas=[],
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,
exclude_binaries=True,
name='MainFile',
debug=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='MainFile')
答案 0 :(得分:1)
如果您使用大量的库和文件,那么第一次创建pyinstaller exe可能会有点吓人。我按照下面提到的步骤进行了工作,对我有用。
1)使用以下命令创建规格文件:
pyinstaller filename.py
这将尝试从py文件创建一个exe,但是如果存在依赖项,则很可能会失败。没关系。它还要做的是创建一个规范文件,此后您就可以使用它创建一个exe。现在,您将在同一目录中有一个filename.spec。
2)spec文件实际上是pyinstaller运行以创建您的exe的python代码。将其视为创建exe所需的配置文件。使用任何文本编辑器打开规范文件,并按照以下步骤进行编辑。
2a)将代码运行所需的所有py文件插入其中的第一个列表 分析
例如:Analysis(['file1.py', 'file2.py', 'file3.py'],
2b)在规范的数据列表中插入所有需要的数据文件(在Analysis内) 文件。每个条目将是一个元组。元组中的第一个元素将是资源的路径,第二个条目将是输出中的文件夹名称。
例如:datas=[('csv\\', 'csv'), ('plotly-latest.min.js', '.')],
这将在输入中复制csv文件夹的内容,并在输出根文件夹中创建一个csv文件夹并将其粘贴到那里。还将复制js文件并将其粘贴到输出的根文件夹中。
最终的规格文件如下所示:
# -*- mode: python -*-
import sys
sys.setrecursionlimit(5000)
block_cipher = None
a = Analysis(['file1.py', 'file2.py', 'file3.py'],
pathex=['C:\\Users\\Username\\PycharmProjects\\myproject'],
binaries=[],
datas=[('csv\\', 'csv'), ('plotly-latest.min.js', '.')],
hiddenimports=['scipy._lib.messagestream', 'cython', 'sklearn', 'sklearn.ensemble', 'sklearn.neighbors.typedefs', 'sklearn.neighbors.quad_tree', 'sklearn.tree._utils', 'ipykernel.datapub'],
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,
exclude_binaries=True,
name='myproject',
debug=False,
strip=False,
upx=True,
console=True,
icon='icons\\appicon.ico')
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='myproject')
规范准备好后,您现在可以通过将规范文件传递给pyinstaller命令来创建exe:
pyinstaller filename.spec
这将创建一个exe。如果您设法创建一个exe,但是如果该exe只是打开一个控制台并关闭,则表明该过程中存在错误。您可以在命令提示符下打开exe,阅读错误并进一步调试。