Py2App 找不到标准模块

5 投票
3 回答
7661 浏览
提问于 2025-04-15 13:56

我用py2app做了一个应用程序,运行得很好。但是如果我把它压缩成.zip文件,然后再解压缩,解压后的版本就无法使用一些标准的Python模块,比如traceback或者os。zip的说明说它能保留资源分叉,我也看到过其他应用程序是这样打包的(我需要把这个放进.zip文件里)。我该怎么解决这个问题呢?

3 个回答

0

你可能需要提供完整的PYTHONPATH。

这要看你使用的操作系统。下面是如何查找的方法:

导入os模块(或者其他任何标准模块)

os.file()

0

使用 zip -y ... 命令来创建文件,同时保留符号链接。

5

这个问题是因为你构建了一个半独立的版本,它里面有指向本地安装文件的符号链接。正如你所说,当你压缩或解压缩时,这些链接会丢失,除非你使用了-y这个选项。

另外一个解决办法是构建独立版本,这样会把(公共领域的)文件放在应用程序内部,这样在压缩和解压缩时就能更好地保留这些文件。这样做还意味着应用程序对底层操作系统的变化更有韧性。当然,缺点是它的体积会更大,而且设置起来也更复杂。

要构建一个独立版本,你需要安装python.org的版本,这个版本可以重新打包。关于如何做到这一点的说明可以在这里找到,但要注意查看评论,因为自从这篇博客发布以来,已经有了一些变化。

撰写回答