【问题标题】:Trying to make an .exe out of a python code that uses pyfiglet and some prints with flush试图用一个使用 pyfiglet 的 python 代码和一些带有冲洗的打印件制作一个 .exe
【发布时间】:2020-09-03 18:45:31
【问题描述】:

我是 Python 的新手,对其他语言没有真正的经验。我正在完成这门语言的入门课程,现在我正在做我的最后一个项目。 我正在使用 PyCharm 并运行 Python 3.8。

我的程序使用 pyfiglet 进行一些 ascii 艺术风格的介绍。 时间模块来模拟一些基本的动画。 这段代码似乎禁止我获取 .exe 文件。我试了一下,但是当我想运行它时,它会立即关闭 cmd。它甚至不让我输入程序开始运行所需的第一个信息。

print("Setting up plugboard connections...")
plug_amount = len(key[0][0])
for i in range(plug_amount):
    print(key[0][0][i], " ", end="", flush=True)
    time.sleep(0.3)
    for k in range(12):
        print("-", end="", flush=True)
        time.sleep(0.1)
    print(" ", key[0][1][i], " ", flush=True)
print("Done!")
time.sleep(0.5)

在该位出现之前,来自this tutorial 的 pyinstaller 和 cx_freeze 工作。现在它不起作用,我真的很想与朋友分享这个程序,不管课程如何。 我该如何解决这个问题?

编辑:

这是我从 cmd 运行 exe 时得到的回溯

Traceback (most recent call last):
  File "site-packages\pkg_resources\__init__.py", line 359, in get_provider
KeyError: 'pyfiglet.fonts'

During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "enigma.py", line 179, in <module>
      File "enigma.py", line 9, in main
      File "site-packages\pyfiglet\__init__.py", line 65, in figlet_format
      File "site-packages\pyfiglet\__init__.py", line 794, in __init__
      File "site-packages\pyfiglet\__init__.py", line 801, in setFont
      File "site-packages\pyfiglet\__init__.py", line 126, in __init__
      File "site-packages\pyfiglet\__init__.py", line 136, in preloadFont
      File "site-packages\pkg_resources\__init__.py", line 1134, in resource_exists
      File "site-packages\pkg_resources\__init__.py", line 361, in get_provider
    ModuleNotFoundError: No module named 'pyfiglet.fonts'
    [13684] Failed to execute script enigma

编辑 2: 这是我尝试重建为pyinstaller enigma.py --hidden-import=pyfiglet.fonts后得到的结果

Traceback (most recent call last):
  File "enigma.py", line 179, in <module>
  File "enigma.py", line 9, in main
  File "site-packages\pyfiglet\__init__.py", line 65, in figlet_format
  File "site-packages\pyfiglet\__init__.py", line 794, in __init__
  File "site-packages\pyfiglet\__init__.py", line 801, in setFont
  File "site-packages\pyfiglet\__init__.py", line 126, in __init__
  File "site-packages\pyfiglet\__init__.py", line 136, in preloadFont
  File "site-packages\pkg_resources\__init__.py", line 1134, in resource_exists
  File "site-packages\pkg_resources\__init__.py", line 1404, in has_resource
  File "site-packages\pkg_resources\__init__.py", line 1472, in _has
NotImplementedError: Can't perform this operation for unregistered loader type
[12620] Failed to execute script enigma

【问题讨论】:

  • 打开命令提示符,导航到使用 PyInstaller 生成的可执行文件的目录,然后运行它。回溯是什么?
  • @Legorooj 我会把它添加到帖子中
  • --hidden-import=pyfiglet.fonts?
  • @Legorooj 我不明白你的意思...
  • @Legorooj 你真好。幸运的是,我仍然可以在没有该功能的情况下完成我的最终项目,但我确信一旦修复它,它将对所有其他编码人员都非常有帮助。

标签: python-3.x pycharm pyinstaller cx-freeze flush


【解决方案1】:

这对我有用:

pyinstaller --add-data "C:/Python36/Lib/site-packages/pyfiglet;./pyfiglet" --onefile  C:\Python36\work\myfile.py

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多