Articles of pyinstaller

当我更改图标时,Pyinstaller exe无法正常工作

我正在用python Tkinter做一个GUI。 它也使用numpy和matplotlib。 所以,我使用了pyinstaller,并从python脚本中创build一个exe。 它完美无瑕地运行,做了我想要的一切。 然后,我尝试从gui窗口(我正在使用Windows 10)更改tk图标 master.iconbitmap(default='image.ico') 除了这一行,我不改变主程序。 然后使用pyinstaller和我没有任何错误的exe文件。 但是,当我试图运行该exe文件显示“致命的错误!file.exe返回-1”我错过了什么? 如何解决这个问题? 另外我还有一个额外的问题,我build立的第一个exe(不更改图标)在Windows-10和Windows-8上运行,而不是在Windows-7上运行。 在Windows 7中它显示相同的错误“致命的错误!file.exe返回-1”

我可以在构buildpyinstaller可执行文件时控制体系结构(32位和64位)吗?

简短的问题 在构buildpyinstaller可执行文件时,有没有办法控制/保证体系结构(32位和64位)? 背景 我从py2exe迁移到pyinstaller是因为缺乏64位的支持以及一些我很难看的过去的小事情。 所以在这个笔记上,我不想回到它。 我使用Python 2.7 64位开发了两个应用程序,并且在32位机器上运行时遇到性能问题。 首先是一个简单的wxPython GUI(版本2.9),并连接到一个USB驱动程序的Windows DLL文件。 这个看起来非常“安全”,以32位的方式运行,因为没有只有64位的模块。 但是,在32位Windows XP上运行时,这个应用程序在与USB设备交谈时会遇到可怕的性能问题。 第二个应用程序要大得多,我还没有试图build立和运行,因为害怕架构问题。 这个应用程序只有一个64位的模块(psycopg2)。 我想远离试图build立这个如果不可能作为一个32位的可执行文件运行。 当前的想法 我觉得这可能是可行的(如果模块有32位支持),通过在32位模式下强制运行python build.py。 这有意义吗? 更新 我在build设的第一个项目上有了几个突破。 事实certificate,性能问题完全取决于两台机器的速度。 我的开发机器有足够的能力来轮询USB设备足够快,而慢得多的testing平台(Windows XP)没有。 我通过修改USB端口轮询的方式解决了这个问题。 现在,这是固定的,我可以在两个系统上运行exe。 尝试将可执行文件构build为单个文件时,出现了一个新问题。 当运行pyinstaller的Build.py时,它将引入应用程序需要运行的所有必需的DLL。 这似乎起初工作很好,但是当我试图运行我build立在Windows 7 64位的单个exe,它不会在Windows XP上运行,因为USBencryption狗的DLL不被识别为有效的DLL。 为了让单个exe在两个系统上运行,我首先尝试从.spec文件(它似乎是一个python脚本)中删除DLL。 这很方便,因为我可以使用普通的python list修饰符修改build命令之前的包含列表。 我的希望是,如果在exe的临时目录中找不到该DLL,它会在系统PATH上find它。 虽然这种方法可能工作,但我不能没有抛出很多错误就运行。 我的第二个尝试是在Windows XP机器上build立应用程序(离开DLLembedded),希望Win XP DLL能够在Windows 7中工作。成功! 这个configuration工作正常。 但是我坚信,这不是最好的解决scheme,因为它完全依赖于在较新的操作系统上运行的较旧的DLL。

如何让其他人在不安装Python的情况下运行你的Python程序

我用Python做了第二个程序。 这是一个计算二次方程根的程序。 我觉得这很酷,我想让我的朋友们使用它,而不必让他们安装python。 我从朋友那里听说过Pyinstaller,我试过这个方法:首先我在cmd中inputpip install pyinstaller 。 然后我改变目录到包含我想与我的朋友分享的文件的文件夹(它被称为vkv.py )。 然后我input这个命令: pyinstaller vkv.py但我得到这个错误: Indexerror: tuple index out of range 。 显然问题是我有Python 3.6.0和Pyinstaller只能使用Python 3.5以上的版本。 所以我不得不尝试另一种方法。 昨天,我尝试了cx_Freeze和其他一些我忘记的方法,但都失败了。 Cx_Freeze失败,因为我有Python 3.6.0(与Pyinstaller相同),我不记得其他方法出了什么问题。 我的朋友(谁告诉我关于Pyinstaller)告诉我使用virtualenv,所以我查了一个关于这个问题的教程。 看起来我需要创build一个使用Python 3.5的虚拟环境。 所以这些是我在cmd中input的命令: pip install virtualenv mkdir Environments cd environments virtualenv -p C:\Users\hp\AppData\Local\Programs\Python\Python35\python.exe py35_env (在input这个命令之前,我安装了Python 3.5.0) C:\Users\hp\Environments\py35_env\Scripts\activate 现在环境已经被激活了,我在这个环境下pip install pyinstaller ,用pip install pyinstaller 。 然后,我将目录更改为: C:\Users\hp\Desktop\Code\Python testing (这是vkv.py文件所在的位置)。 […]

在Windows XP下运行Python二进制文件

我将PySide应用程序编译为x32和x64模式,并在Windows 7 +下工作。 但是我发现应用程序无法在Windows XP下启动。 我应该额外使用spec-file中的一些技巧吗? 当前PyInstaller脚本显示在下面的app.spec文件中: pyinstaller src / app.spec # -*- mode: python -*- import os import platform from PySide import QtCore onefile = False console = False platform_name = platform.system().lower() app_name = {'linux': 'app', 'darwin': 'app', 'windows': 'app.exe'}[platform_name] # Include imageformats plugins plugins=os.path.join(os.path.dirname(QtCore.__file__), "plugins\\imageformats") static_files = Tree(plugins, 'plugins\\imageformats') static_files += [('app.ico', 'src\\app.ico', […]

无法与pyinstaller一起使用pyexcel-xls。 python可执行文件不工作。 python版本3.4.4

该程序运行时使用: Python filename.py 但是当我使用“ pyinstaller ”创build它的可执行文件时 pyinstaller -F filename.py 可执行文件已成功创build,但脚本的执行失败并引发以下错误。 Traceback (most recent call last): File "site-packages\pyexcel_io\manager.py", line 160, in create_reader File "site-packages\pyexcel_io\manager.py", line 222, in _get_a_handler pyexcel_io.manager.NoSupportingPluginFound: No suitable library found for xls During handling of the above exception, another exception occurred: Traceback (most recent call last): File "script.py", line 8, in <module> File […]

什么是“版本文件”的样子?

我已经使用这个多年,现在没有结果。 PyInstaller手册说: –version-file =文件 从文件添加一个版本资源到exe文件 听起来不错。 我想把版本信息放在我的可执行文件中。 问题是,我不知道“版本文件”是什么样子,我找不到一个我可以使用的例子。 我会考虑一个版本文件的例子作为这个问题的可接受的答案。 我试过了 手册还说: 版 只有Windows NT家族。 版本= 'myversion.txt'。 使用GrabVersion.py从可执行文件中窃取版本资源,然后编辑输出以创build自己的。 (版本资源的语法太神秘了,我不会试图从头开始编写一个。) 我已经尝试过从我的系统中无数的可执行文件。 我只是不断收到这些错误: 回溯(最近一次通话最后): 文件“C:\ pyinstaller-2.0 \ utils \ GrabVersion.py”,第42行, vs = versioninfo.decode(sys.argv [1]) 在解码的文件“C:\ pyinstaller-2.0 \ PyInstaller \ utils \ versioninfo.py”,第33行 nm = win32api.EnumResourceNames(h,RT_VERSION)[0] IndexError:列表索引超出范围 在没有版本信息的可执行文件上,并且: 回溯(最近一次通话最后): 文件“C:\ pyinstaller-2.0 \ utils \ GrabVersion.py”,第43行, 打印vs 在__repr__文件“C:\ pyinstaller-2.0 \ […]

将UAC设置为需要pipe理员使用PyInstaller onefile选项和清单

好的,我一直在努力弄清楚这个问题。 我使用-i -F -w和-m选项使用PyInstaller版本2.0构build名为GraphicScriptWizard.exe的应用程序。 我已经定义了与-m选项一起使用的清单文件叫做GraphicScriptWizard.exe.manifest ,它包含以下内容: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="x86" name="GraphicScriptWizard" type="win32"/> <!– Identify the application security requirements. –> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly> 使用这个清单和命令行选项,我没有得到一个提示升级的可执行文件。 为了完整起见,Pyinstaller生成的spec文件是: # -*- mode: python -*- a = Analysis(['GraphicScriptWizard.py'], pathex=[<Full Development Path>], hiddenimports=[], hookspath=None) pyz = PYZ(a.pure) exe […]

使用pyinstaller从python 3脚本导入theano来为Windows构build一个.exe文件

编辑2017年9月2日下午1点 我最终设法使用pyinstaller在许多情节之后build立一个.exe。 不幸的是,我没有处理'theano'模块(在我的情况下'pymc3'模块需要这个模块),我不得不修改.py文件并放弃部分应用程序。 我在下面的描述有两个目的:首先它可能有帮助; 其次,任何人都可以帮助我build立一个.exe的Windows 7 +,'theano'模块? 提醒:我的python 3脚本在'.ui'文件中打开一个简单的用Qt Designer创build的GUI,并导入pyqtgraph(与pyqt5),pymc3(以及pymc3需要的theano),scipy,numpy,os,sys。 它将分布在Windows 7 +的机器上。 我试图用py2exe,cx_freeze,pynsist和pyinstallerbuild立'.exe'(我打开并更新了几个post,这个仍然是打开的: 从python 3脚本导入pyqtgraph并打开一个GUI为Windows生成一个.exe文件 ),但全部失败。 我最好的结果(与pyinstaller)下面描述后,我不得不放弃theano。 我最后的命令行是: pyinstaller —noupx —onefile —add-data “toto.ui;.” toto.py 。 但奇怪的是: 1 qtdevise器文件“toto.ui”不包含在内,必须与.exe一起发布。 否则在运行.exe文件时会出现错误信息,说toto.ui没有find; 2 python环境的“Library / plugin”目录中的“platforms”目录也必须与.exe一起分发。 否则当运行.exe“这个应用程序启动失败,因为找不到qt平台插件窗口”(但是没有错误信息从pyinstallerbuild立的时候)出现错误信息! 3 .exe是220MB大! 似乎pyinstaller在build设过程中包含了一堆无用的东西。 pyqtgraph问题: 乍一看,模块“pyqtgraph”似乎与pyinstaller不兼容。 事实上,当python代码导入pyqtgraph时,pyinstaller会'yield' inside async function给出一个SyntaxError: 'yield' inside async function 。 这在我看来非常尴尬(这是pyinstaller中的一个错误?),因为我对论坛有印象,这与只与python 3.6兼容的asynchronous生成器有关,而pyinstaller只与python 3.5一起工作 – 这与asynchronous不兼容生成器…为什么pyinstaller使用这个? 事实certificate,这个类似bug的function在一个新版本的pyinstaller中是被禁用的,而这个新版本没有被发布(默认情况下没有安装): […]

与pandas一起使用pyinstaller

我正在尝试与pandas一起使用pyinstaller。 我写了一个非常简单的模块: installtest.py: import pandas print 'Hello!' 然后呢: pyinstaller .\installtest.py 接下来,我编辑了installtest.spec,如同其他问题所述 ,删除了build和dist目录,并在编辑后的spec上再次运行pyinstaller: pyinstaller .\installtest.spec 然后我尝试运行这样的结果exe文件: .\dist\installtest\installtest.exe 但是,我得到以下错误: Traceback (most recent call last): File "installtest.py", line 1, in <module> import pandas File "c:\users\admini~1\appdata\local\temp\pip-build-kuazog\pyinstaller\PyInstaller\loader\pyimod03_importers.py", lin e 389, in load_module File "site-packages\pandas\__init__.py", line 13, in <module> ImportError: C extension: hashtable not built. If you want to import pandas […]

通过pip安装pyinstaller导致“无法创build进程”

有谁知道为什么pyinstaller立即失败后,通过pip通过anaconda 32bit安装anaconda 32bit ? 我安装pyinstaller通过pip install pyinstaller通过在Windows 64位使用32位anaconda anaconda命令提示符(因为我想创build32位可执行文件) 是的,我读了pyinstaller – 版本无法创build进程和点/ easy_install失败:未能创build进程和如何安装pyinstaller使用点 我没有重命名15分钟前安装anaconda的任何文件,pycharm 10分钟前和pyinstaller 5分钟前。 我卸载pyinstaller通过pup卸载并重新安装在anaconda脚本文件夹,这没有做任何事情。 任何有识之士? #windowsfrustrationspathC:\Users\me\Anaconda\Lib\site-packages>PyInstaller