0

我有一个不会使用 pyinstaller 打包到 exe 的 GUI 应用程序。当我运行 pyinstaller main.py --onefile --windowed 时,出现以下错误。

Traceback (most recent call last):
  File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'pendulum.locales'

我将 pendulum 从 1.4 更新到 2.0.5,然后 exe 构建得很好。但是,这不会运行。我在没有 --windowed 标志的情况下重新运行了 pyinstaller,然后可以看到我正在使用的 ORM(演说者)与 > 1.4 pendulum 不兼容,并且无法导入 Pendulum form pendulum。

from pendulum import Pendulum, Date
ImportError: cannot import name 'Pendulum' from 'pendulum' (C:\Users\Paul\PycharmProjects\JobsV10\venv\lib\site-packages\pendulum\__init__.py)

我尝试了以下帖子来更改 pyinstaller 中的钩子,但这些都不起作用。

https://github.com/pyinstaller/pyinstaller/issues/3528

我真的不想删除 orator,因为我经常使用 Laravel,并且 orator 接近我熟悉的优秀 Eloquent。有没有办法让 pyinstaller 与 pendulum 1.4 一起工作?

更新

改变

datas = collect_data_files("pendulum.locales", include_py_files=True)

在站点 Packages/Pyinstalller/hooks/hook-pendulum.py 到

datas = collect_data_files("pendulum", include_py_files=True)

似乎已经成功了。

不打算将此标记为答案,因为我不确定这是否会导致问题。

4

1 回答 1

0

This has fixed my problem and has been in production for over 50 days with no issues so I am now going to mark it as answered. Although this fixed my issue, removing the '.locales' may break something in certain circumstances so always keep this in mind.

于 2019-10-02T14:44:51.140 回答