使用pyinstaller 2.1将python打包并添加版本信息和图标

  最近用 wxpython写了一个小的脚本,因为想要发布给没有装python和wxpython的人使用,遂决定使用pyinstaller 2.1进行打包。

其中遇到几个问题:

1,给打包的文件添加图标

  查看pyinstaller 的操作手册很容易发现:

-i <FILE.ico>, -i <FILE.exe,ID>, --icon=<FILE.ico>, --icon=<FILE.exe,ID>
  Add an icon to the output executable. Specify an icon FILE.ico to use that icon. Specify an existing .exe file giving the ID to extract the icon with that ID.

  可以在使用的时候,在命令行中执行,不过更推荐的是使用bat文件来执行

  python pyinstaller.py --icon=targetico_path.ico--onefile   --windowed target_py_file.py进行打包

2,给打包的程序添加版本信息

  查看pyinstaller 操作手册发现:

--version-file=version_text_file
  Add a Version resource to the .exe output using a version_text_file as produced by pyi-grab_version

  也就是说要添加版本信息需要指定一个版本信息文件,版本信息文件操作手册中也给了制作方法

Capturing Version Data

pyi-grab_version executable_with_version_resource

The pyi-grab_version command is invoked with the full path name of a Windows executable that has a Version resource. (A Version resource contains a group of data structures, some containing binary integers and some containing strings, that describe the properties of the executable. For details see the Version Information Structures page.)

The command writes text that represents a Version resource in readable form. The version text is written to standard output. You can copy it from the console window or redirect it to a file. Then you can edit the version information to adapt it to your program. This approach is used because version resources are complex. Some elements are optional, others required. When you view the version tab of a Properties dialog, there‘s no simple relationship between the data displayed and the structure of the resource. Using pyi-grab_version you can find an executable that displays the kind of information you want, copy its resource data, and modify it to suit your package.

The version text file is encoded UTF-8 and may contain non-ASCII characters. (Unicode characters are allowed in Version resource string fields.) Be sure to edit and save the text file in UTF-8 unless you are certain it contains only ASCII string values.

The edited version text file can be given with a --version-file= option to pyinstaller or pyi-makespec. The text data is converted to a Version resource and installed in the executable output.

In a Version resource there are two 64-bit binary values, FileVersion and ProductVersion. In the version text file these are given as four-element tuples, for example:

filevers=(2, 0, 4, 0),
prodvers=(2, 0, 4, 0),

The elements of each tuple represent 16-bit values from most-significant to least-significant. For example the FileVersion value given resolves to 0002000000040000 in hex.

set_version version_text_file executable_file

The set_version utility reads a version text file as written by pyi-grab_version, converts it to a Version resource, and installs that resource in the executable_file specified.

For advanced uses, examine a version text file. You find it is Python code that creates a VSVersionInfo object. The class definition for VSVersionInfo is found in utils/versioninfo.py in thePyInstaller distribution folder. You can write a program that imports that module. In that program you can eval the contents of a version info text file to produce a VSVersionInfo object. You can use the .toRaw() method of that object to produce a Version resource in binary form. Or you can apply the unicode() function to the object to reproduce the version text file.

  上面的意思呢就是使用pyinstaller内置的grab_version.py工具获得其他.exe程序的版本信息文件,版本信息文件里面包括公司名,程序内部名称版本号之类,然后再把这个信息里面的相关信息更改成你想要的信息,再使用上面的--version-file=version_text_file 参数的把版本信息注射到.exe中去。

  其中注意因为这个版本信息是严格的数据结构,所以最好不要用notepad打开,有可能导致版本信息文件失效,我用的是notepad++更改,实测有用。

  其中grab_version.py的位置在.\PyInstaller-2.1\utils,pyinstaller 2.1根目录下的utils目录下。

  可以在使用的时候,在命令行中执行,需要将当前路径转到该脚本所在地或者指定grab_version.py的路径,不过更推荐的是使用bat文件来执行,只需要将下面字符保存到bat中方到grab_version.py文件里面去了:

  python grab_version.py targetExe_path

  比如:

  python grab_version.py C:\Windows\System32\diskext.exe

  产生的版本信息文件就在程序的当前目录下,更改好版本信息文件之后就可以开始使用了 

  python pyinstaller.py --version-file=file_version_info.txt --icon=ico.ico --onefile --windowed target.py

  OK,问题解决。

使用pyinstaller 2.1将python打包并添加版本信息和图标

时间: 2024-10-25 22:19:19

使用pyinstaller 2.1将python打包并添加版本信息和图标的相关文章

pyinstaller对py脚本进行打包(生成windows可执行程序)

这个没有什么截图,主要步骤如下: a. 安装python-2.7-x64版本(我的系统是win7-x64) b. 下载PyInstaller-2.1 x64版本 c. 下载pywin32-x64版本 d.下载upx.exe (这个在pyinstall官网上面会有提示) e.使用pythone setup.py install 安装pyinstaller 一般我们是生成单文件的exe,方便可以在其他windows机器上可执行. 生成的命令是: python pyinstaller.py  -F  

【01】Python打包输出为.exe可执行文件

这是我的第01篇博客 Python打包输出为.exe可执行文件 在完成了之前的爬虫以后,为了给电脑上没有Python环境的朋友玩我的爬虫,开始尝试把爬虫的.py文件输出成.exe可执行文件. 首先,Python的教程上提到了py2exe的模块.但是一波搜索以后发现这个玩意只支持到Python3.4,而我用的是Python3.5.2,这让我很尴尬......于是继续一波搜索,发现了一个叫PyInstaller的模块.这个模块可以完美支持Python3.5,于是怒入. 首先是安装.去sourcefo

python打包exe文件-ImportError: No module named &#39;queue&#39;

我之前遇到的一个错误就是 [html] view plain copy File "site-packages\urllib3\packages\six.py", line 92, in __get__ File "site-packages\urllib3\packages\six.py", line 115, in _resolve File "site-packages\urllib3\packages\six.py", line 82, 

Python打包EXE文件

Python程序打包工具 Python是一个脚本语言,被解释器解释执行.它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库.(Python官方的各种安装包就是这样做的). .pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库. 可执行文件:对于非码农用户或者一些

使用pyinstaller 对py脚本进行打包(生成linux可执行文件)

需求1:打包成Linux上可执行程序 a. 先下载pyinstaller程序,我当前下载的是PyInstaller-2.1的版本 进行如下操作: [email protected]:~/PyInstaller-2.1$ sudo python2.7 setup.py install [email protected]:~/PyInstaller-2.1$ pwd /home/pythoner/PyInstaller-2.1 #生成一个单文件可执行的spec文件 [email protected]

如何使用 pyinstaller 对py脚本进行打包?

需求1:打包成Linux上可执行程序a. 先下载pyinstaller程序,我当前下载的是PyInstaller-2.1的版本 进行如下操作: [email protected]:~/PyInstaller-2.1$ sudo python2.7 setup.py install [email protected]:~/PyInstaller-2.1$ pwd /home/pythoner/PyInstaller-2.1 生成一个单文件可执行的spec文件 [email protected]:~

[转]Python打包工具

作者:Tarek Ziadé,翻译:张吉 原文:http://www.aosabook.org/en/packaging.html 转载地址:http://www.ituring.com.cn/article/19090 14.1 简介 对于如何安装软件,目前有两种思想流派.第一种是说软件应该自给自足,不依赖于其它任何部件,这点在Windows和Mac OS X系统中很流行.这种方式简化了软件的管理:每个软件都有自己独立的“领域”,安装和卸载它们不会对操作系统产生影响.如果软件依赖一项不常见的类

Python打包成exe

有个好网站http://www.lfd.uci.edu/~gohlke/pythonlibs/ , 这个网站可以下载许多非官方的python库的安装包. 1.首先去这个网站下载cx_freeze安装包后安装. 2.在C:\PythonXX\Scripts\ 下可以看到cxfreeze-quickstart.bat, XX为版本号 3.运行cxfreeze-quickstart.bat, 根据向导生成setup.py setup.py类似如下: importsys fromcx_Freeze im

Python 打包和发布方法汇总

以下主要Python打包汇总,作为学习备份: 一.使用python内部基础工具包Distutils打包程序 1. 在打包之前需要做的就是配置好安装脚本,一般为setup.py文件: 示例(setup.py): from distutils.core import setup setup(name='Hello', version='1.0', description='example', author='haomiao', py_modules=['hello']) 该配置文件,只使用了py_m