3

Pyinstaller を使用する確立された Python アプリケーションの 1 つのビルド スクリプトがあります。このスクリプトは、1 年以上正常に動作しています。そして今日、このアプリケーションのソース ファイルの 1 つに次の行を追加しました。

import scipy.stats

scipy.stats.linregressを使いたいからです。これにより、ビルド スクリプトがクラッシュし、長いエラー トレースバック (相互にインポートするモジュールのシーケンスをたどるように見えます) で終了します。

  File "C:\Users\462974\Documents\Local Sandbox\fof\TRUNK\programs\CDFParsing\build\pyi.win32\CDFGUI\outPYZ1.pyz/scipy.sparse.csgraph", line 148, in <module>
  File "C:\Python27\pyinstaller-1.5\iu.py", line 436, in importHook
    mod = _self_doimport(nm, ctx, fqname)
  File "C:\Python27\pyinstaller-1.5\iu.py", line 495, in doimport
    mod = importfunc(nm)
  File "C:\Python27\pyinstaller-1.5\iu.py", line 297, in getmod
    mod = owner.getmod(nm)
  File "C:\Python27\pyinstaller-1.5\archive.py", line 468, in getmod
    return iu.DirOwner.getmod(self, self.prefix+'.'+nm)
  File "C:\Python27\pyinstaller-1.5\iu.py", line 109, in getmod
    mod = imp.load_module(nm, fp, attempt, (ext, mode, typ))
  File "_shortest_path.pyx", line 18, in init scipy.sparse.csgraph._shortest_path (scipy\sparse\csgraph\_shortest_path.c:14224)
  File "C:\Python27\pyinstaller-1.5\iu.py", line 455, in importHook
    raise ImportError, "No module named %s" % fqname
ImportError: No module named scipy.sparse.csgraph._validation

C:\Python27\Lib\site-packages\scipy\sparse\csgraph_validation.py にあるモジュールが非常に存在するため、これは不可解です。ビルドに scipy を追加すると壊れたのはなぜですか (numpy のインポートは正常に動作します)、それが見つからない可能性がありますか?

4

1 に答える 1

1

理由は完全にはわかりませんが、インポートステートメントの後にコードに次の定義を含めて修正しました:

def fix_dependencies():
    from scipy.sparse.csgraph import _validation
于 2013-11-15T15:15:41.713 に答える