2013-02-27 13 views
5

私はWindowsにあり、pyInstallerを使ってPythonファイルをパッケージ化しています。しかし、何かエラーが発生しました:pyInstaller:インポートエラー

Traceback (most recent call last): 
    File "<string>", line 2, in <module> 
    File "D:\Useful Apps\pyinstaller-2.0\PyInstaller\loader\iu.py", line 386, in i 
mportHook 
    mod = _self_doimport(nm, ctx, fqname) 
    File "D:\Useful Apps\pyinstaller-2.0\PyInstaller\loader\iu.py", line 480, in d 
oimport 
    exec co in mod.__dict__ 
    File "D:\Useful Apps\pyinstaller-2.0\server\build\pyi.win32\server\out00-PYZ.p 
yz\SocketServer", line 132, in <module> 
    File "D:\Useful Apps\pyinstaller-2.0\PyInstaller\loader\iu.py", line 386, in i 
mportHook 
    mod = _self_doimport(nm, ctx, fqname) 
    File "D:\Useful Apps\pyinstaller-2.0\PyInstaller\loader\iu.py", line 480, in d 
oimport 
    exec co in mod.__dict__ 
    File "D:\Useful Apps\pyinstaller-2.0\server\build\pyi.win32\server\out00-PYZ.p 
yz\socket", line 47, in <module> 
    File "D:\Useful Apps\pyinstaller-2.0\PyInstaller\loader\iu.py", line 409, in i 
mportHook 
    raise ImportError("No module named %s" % fqname) 
ImportError: No module named _socket 

私は_socketがパスC:\Python27\libs\_socket.libであることを知っているが、どのようにEXEは、そのファイルを見つけてみましょうことができますか?

答えて

2

アプリケーションスペックファイルにパスを追加できます。 Analysisオブジェクトで

あなたがpathex=['C:\Python27\libs\', 'C:\Python27\Lib\site-packages']、およびその他のパス...パスが見つからない場合は問題がないことを

注意を指定することができます...私はそこのlinuxからのパスにもでています。

2

これはhidden imports(最新のビルドでのみ使用可能)のジョブのようです。ドキュメント

​​
1

から

あなたは "-p" または "--path = 'D:...'" 使用する必要がありますvirtualenvを使用している場合はオプションを選択します。このように:これは何

pyinstaller.exe --onefile --paths=D:\env\Lib\site-packages .\foo.py 

は上記の回答の

0

なし私のために働いていないが、私はそれが仕事になりました。このpathexパスとfoo.specファイルを生成します。私はopenpyxlを使用していて、datetime.pyモジュールにjdcalが必要です。隠れたインポートやそれらのメソッドのどれも助けられなかった、exeを実行することはまだjdcalが見つからないと言うでしょう。私が使用した回避策は、jdcalのいくつかの関数をopenpyxlコードのdatetime.pyに直接コピーすることでした。次に実行しました pyinstaller -F program.py

0

同様の問題がありました。ここでPyQt5、cffi、Pythonの3.4.3のための私の修正があります:

それが来る場合、これは「すする」が見つかりませんエラーと「_cffi_backend」1を修正アップ:「pathex」での

# -*- mode: python -*- 

block_cipher = None 


a = Analysis(['LightShowApp.py'], 
      pathex=['c:\\MyProjects\\light-show-editor-36', 
      'c:\\Python34\\libs\\', 'c:\\Python34\\Lib\\site-packages'], 
      binaries=None, 
      datas=None, 
      hiddenimports=['sip', 'cffi'], 
      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, 
      a.binaries, 
      a.zipfiles, 
      a.datas, 
      name='LightShowApp', 
      debug=False, 
      strip=False, 
      upx=True, 
      console=True) 

ルックと上記の 'hiddenimports'。これらはデフォルトから生成された唯一の変更です。 exeファイルをビルドします。

pyinstaller LightShowApp.spec -F

は私がvenvまたはPIP-勝利の外を走った - そのがらくたがあるためwhateverTF!