2

我正在用最新版本的 Pynsist 打包一个 Python 2.7 程序。
我按照这个 示例创建了一个 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 ...)。
感谢和抱歉英语不好

4

1 回答 1

2

重新发布作为答案,因为它有效:

如果您将 pygame 放入packages=,它会尝试从您的计算机中复制它。但是在您的计算机上,这是适用于 Linux 的 pygame,它不能在 Windows 上运行。如果您改为将 pygame 放在pypi_wheels=配置文件中,Pynsist 将负责为您下载 Windows 版本。

查看 Pynsist 存储库中的 pygame 示例

大多数包没有这个问题,因为它们只包含 Python 代码,在所有平台上都是相同的文件。Pygame 已编译模块,必须针对正确的平台进行编译。

于 2017-09-13T12:15:39.120 回答