PyInstaller:尝试运行分发文件时出现 FileNotFoundError

Posted

技术标签:

【中文标题】PyInstaller:尝试运行分发文件时出现 FileNotFoundError【英文标题】:PyInstaller: FileNotFoundError when trying to run the distribution file 【发布时间】:2020-05-30 21:03:47 【问题描述】:

我正在帮助一个需要在 csvs 中转换一些数据的朋友,所以我制作了一个名为“csv_converter.py”的小 Python 程序——它需要一个 csv 输入文件和 csv 输出文件,一切都很好。

我希望能够给他们一个可以在他们的机器上运行的文件(不一定需要 python 和 pandas),所以我正在尝试 PyInstaller。 在包含我的 python 程序的目录中,我运行:pyinstaller csv_converter.py

根据docs,它将创建一个“dist”文件夹,“您可以在其中找到您分发给用户的捆绑应用程序”。听起来要运行的关键文件将是:dist/csv_converter/csv_converter(澄清来源:here),然后我可以发送整个 csv_converter 文件夹,或者如果我使用 - 运行 Pyinstaller 命令,则只发送 csv_converter 文件-onefile 参数。

运行 PyInstaller 后,我看到创建了这些目录,但是当我导航到 dist/csv_converter/ 并尝试运行那个重要的 csv_converter 文件时(在尝试发送任何内容之前),它给出了以下错误:

Dianes-MacBook-Pro:csv_converter dkaplan$ ./csv_converter -h
Traceback (most recent call last):
  File "site-packages/PyInstaller/loader/rthooks/pyi_rth__tkinter.py", line 30, in <module>
FileNotFoundError: Tcl data directory "/Users/dkaplan/PycharmProjects/chris_csv_converter/src/dist/csv_converter/tcl" not found.
[36637] Failed to execute script pyi_rth__tkinter

如此接近,但如此遥远! 有其他人遇到过这个问题或知道解决方法吗?

【问题讨论】:

【参考方案1】:

我收到了 PyInstaller 好心人的回复,这是他们在 tinter 中看到的常见问题。我不确定它是从哪里拉进来的,但解决方法是用这个参数排除它:--exclude-module=tkinter

我选择使用 --onefile 参数(速度较慢,但​​意味着我只能发送一个文件),所以完整的命令是:pyinstaller --onefile --exclude-module=tkinter csv_converter.py

然后:

我可以转到 dist 文件夹并使用以下命令进行测试运行:./csv_converter -h 然后我将该 csv_converter 文件发送给我的朋友,他将能够以相同的方式运行它(无需 python)

【讨论】:

以上是关于PyInstaller:尝试运行分发文件时出现 FileNotFoundError的主要内容,如果未能解决你的问题,请参考以下文章

记录Pyinstaller 打包的坑

解决: PyInstaller打包后exe文件打开时出现failed to execute script

如何解决意外的 pyinstaller 异常“找不到 pyqt5_plugins 分发”?

Pyinstaller打包配置UPX缩小程序包大小,打包时出现UPX is not available处理方法

Pyinstaller打包配置UPX缩小程序包大小,打包时出现UPX is not available处理方法

Python:使用 Pyinstaller 编译