[ Python 2.7 ]用Pynsist打包程序
[ Python 2.7 ]Package program with Pynsist
我正在用最新版本的 Pynsist 打包 Python 2.7 程序。
我按照 this 示例创建了一个 installer.cfg 文件。
但是当我尝试打包我的应用程序时 运行
pynsist installer.cgf
进入它附带的应用程序文件夹
Copying Python installer to build directory
PyLauncher MSI already in build directory.
Copying packages into build directory...
Traceback (most recent call last):
File "/usr/local/bin/pynsist", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python2.7/dist-packages/nsist/__init__.py", line 540, in main
InstallerBuilder(**args).run(makensis=(not options.no_makensis))
File "/usr/local/lib/python2.7/dist-packages/nsist/__init__.py", line 495, in run
self.prepare_packages()
File "/usr/local/lib/python2.7/dist-packages/nsist/__init__.py", line 381, in prepare_packages
py_version=self.py_version, exclude=self.exclude)
File "/usr/local/lib/python2.7/dist-packages/nsist/copymodules.py", line 224, in copy_modules
mc.copy(modname, target, exclude)
File "/usr/local/lib/python2.7/dist-packages/nsist/copymodules.py", line 195, in copy
check_package_for_ext_mods(path, self.py_version)
File "/usr/local/lib/python2.7/dist-packages/nsist/copymodules.py", line 41, in check_package_for_ext_mods
check_ext_mod(os.path.join(path, dirpath, filename), target_python)
File "/usr/local/lib/python2.7/dist-packages/nsist/copymodules.py", line 30, in check_ext_mod
raise ExtensionModuleMismatch(extensionmod_errmsg % ('Windows', path))
nsist.copymodules.ExtensionModuleMismatch: Found an extension module that will not be usable on Windows:
/usr/lib/python2.7/dist-packages/pygame/rwobject.so
Put Windows packages in pynsist_pkgs/ to avoid this.
所以我认为问题出在 Pygame 上。
在 Google 上没有关于此的任何内容,但我不能使用其他程序进行打包(例如 py2exe、pyinstaller ecc...)。
谢谢,抱歉英语不好
重新发布作为答案,因为它有效:
如果您将 pygame 放入 packages=
,它会尝试从您的计算机复制它。但是在您的计算机上,pygame 对应 Linux,这不适用于 Windows。如果您改为将 pygame 放入配置文件的 pypi_wheels=
位,Pynsist 将为您下载 Windows 版本。
查看 Pynsist 存储库中的 the pygame example。
大多数包没有这个问题,因为它们只包含 Python 代码,这些代码在所有平台上都是相同的文件。 Pygame 已编译模块,必须针对正确的平台进行编译。
我正在用最新版本的 Pynsist 打包 Python 2.7 程序。
我按照 this 示例创建了一个 installer.cfg 文件。
但是当我尝试打包我的应用程序时 运行
pynsist installer.cgf
进入它附带的应用程序文件夹
Copying Python installer to build directory
PyLauncher MSI already in build directory.
Copying packages into build directory...
Traceback (most recent call last):
File "/usr/local/bin/pynsist", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python2.7/dist-packages/nsist/__init__.py", line 540, in main
InstallerBuilder(**args).run(makensis=(not options.no_makensis))
File "/usr/local/lib/python2.7/dist-packages/nsist/__init__.py", line 495, in run
self.prepare_packages()
File "/usr/local/lib/python2.7/dist-packages/nsist/__init__.py", line 381, in prepare_packages
py_version=self.py_version, exclude=self.exclude)
File "/usr/local/lib/python2.7/dist-packages/nsist/copymodules.py", line 224, in copy_modules
mc.copy(modname, target, exclude)
File "/usr/local/lib/python2.7/dist-packages/nsist/copymodules.py", line 195, in copy
check_package_for_ext_mods(path, self.py_version)
File "/usr/local/lib/python2.7/dist-packages/nsist/copymodules.py", line 41, in check_package_for_ext_mods
check_ext_mod(os.path.join(path, dirpath, filename), target_python)
File "/usr/local/lib/python2.7/dist-packages/nsist/copymodules.py", line 30, in check_ext_mod
raise ExtensionModuleMismatch(extensionmod_errmsg % ('Windows', path))
nsist.copymodules.ExtensionModuleMismatch: Found an extension module that will not be usable on Windows:
/usr/lib/python2.7/dist-packages/pygame/rwobject.so
Put Windows packages in pynsist_pkgs/ to avoid this.
所以我认为问题出在 Pygame 上。
在 Google 上没有关于此的任何内容,但我不能使用其他程序进行打包(例如 py2exe、pyinstaller ecc...)。
谢谢,抱歉英语不好
重新发布作为答案,因为它有效:
如果您将 pygame 放入 packages=
,它会尝试从您的计算机复制它。但是在您的计算机上,pygame 对应 Linux,这不适用于 Windows。如果您改为将 pygame 放入配置文件的 pypi_wheels=
位,Pynsist 将为您下载 Windows 版本。
查看 Pynsist 存储库中的 the pygame example。
大多数包没有这个问题,因为它们只包含 Python 代码,这些代码在所有平台上都是相同的文件。 Pygame 已编译模块,必须针对正确的平台进行编译。