2016-05-01 50 views
1

PyInstallerを使ってAsciimatics用のデモスクリプトをコンパイルしようとしていますが、最終的にはテキストベースのゲーム用の簡単なGUIを作成したいと考えています。 mが開発し、それが次のエラーを返します。PyInstaller ImportError: 'pyfiglet.fonts'という名前のモジュールがありません

C:\Users\X\Documents\Python Scripts\asciimatics samples\dist\test>test.exe 

Traceback (most recent call last): 
    File "site-packages\setuptools-19.2-py3.4.egg\pkg_resources\__init__.py", line 443, in get_provider 
KeyError: 'pyfiglet.fonts' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "<string>", line 22, in <module> 
    File "site-packages\asciimatics\screen.py", line 859, in wrapper 
    File "<string>", line 12, in demo 
    File "site-packages\asciimatics\renderers.py", line 276, in __init__ 
    File "site-packages\pyfiglet\__init__.py", line 710, in __init__ 
    File "site-packages\pyfiglet\__init__.py", line 717, in setFont 
    File "site-packages\pyfiglet\__init__.py", line 90, in __init__ 
    File "site-packages\pyfiglet\__init__.py", line 100, in preloadFont 
    File "site-packages\setuptools-19.2-py3.4.egg\pkg_resources\__init__.py", line 1160, in resource_exists 
    File "site-packages\setuptools-19.2-py3.4.egg\pkg_resources\__init__.py", line 445, in get_provider 
ImportError: No module named 'pyfiglet.fonts' 
test returned -1 

このエラーはthis threadを返さグーグルが、エラーがSublimeFiglet自体の内部の故障によって引き起こされ、そして2年前に修正されましたように私には思えます。

私はWindows 10でPython 3.4を使用しています。実行しようとするとパッケージパッケージが見つからないというエラーが表示されていたため、setuptoolsを19.2にダウングレードしなければなりませんでしたコンパイルされた.exeファイル

私は、スクリプトを実行するのに必要な他のインポートに加えて、6つ(隠れたインポートであるため)とtest.pyのpyfigletモジュールの両方をインポートしました。私が考えることができるpyfigletと任意のバリエーションをインポートすると何も変わりません。スペックファイルを変更して6つの隠しインポートを追加することはできましたが、どうすればそれが変わるのか分かりません。 Asciimaticsに含まれているすべてのサンプルスクリプトが私のために、この同じエラーを返します

block_cipher = None 


a = Analysis(['test.py'], 
      pathex=['C:\\Users\\Sirindil\\Documents\\Python Scripts\\asciimatics samples'], 
      binaries=None, 
      datas=None, 
      hiddenimports=[], 
      hookspath=[], 
      runtime_hooks=[], 
      excludes=[], 
      win_no_prefer_redirects=False, 
      win_private_assemblies=False, 
      cipher=block_cipher) 
pyz = PYZ(a.pure, a.zipped_data, 
      cipher=block_cipher) 
exe = EXE(pyz, 
      a.scripts, 
      exclude_binaries=True, 
      name='test', 
      debug=False, 
      strip=False, 
      upx=True, 
      console=True) 
coll = COLLECT(exe, 
       a.binaries, 
       a.zipfiles, 
       a.datas, 
       strip=False, 
       upx=True, 
       name='test') 

:ここ

はpyInstallerのが使用するspecファイルです。 pyinstallerをスクリプト上で実行するときに、さまざまなオプションを使用してみましたが、成功しませんでした。何か不足していますか?私はこれをどのように修正するのか分かりません。

+0

PyInstallerでexeをどのように構築していますか? specファイルを提供できますか? –

+0

スペックファイルを提供するように編集されました。 –

答えて

0

pyfigletのフォントファイルを含めずにEXEを構築しているようです。これは、PyInstallerがpkg_resourcesコールをpyfigletから解釈してパッケージ化するファイルセットを構築できないためです。

自分で使ったことはありませんが、パッケージにフォントファイルを追加して、すべての不足ファイルを含めることができるようです。updating your spec fileただし、FAQには注意が必要です。pkg_resourcesのサポートは限られているため、pyfigletをパッケージ化することはできません。

0

質問はかなり古いですが、私は同じ問題を持っていたし、単に/ pyInstallerのdistのフォルダにPYTHONPATH \ Libの\サイト - パッケージからpyfigletフォルダを貼り付けるコピーしてそれを解決しました。

0

が生成distのにファイルをコピーしますpyInstallerのコマンドオプションでシステム上Pyfigletフォルダのパスを指定します。

例:。

pyinstaller --add-data "C:/Program Files/Python35/Lib/site-packages/pyfiglet";./pyfiglet MyApp.py

または単一のEXEファイルのため:あなたのアプリケーション名は "MyApp.py" であると仮定すると、

pyinstaller --onefile --add-data "C:/Program Files/Python35/Lib/site-packages/pyfiglet";./pyfiglet MyApp.py

、お使いのシステムが設置されるlibに、WindowsとPyfigletですC:/ Program Files/Python35/Lib/site-packages/pyfiglet

それ以外の場合は、正しい値に変更します。

関連する問題