簡體   English   中英

pyinstaller錯誤:找不到scipy(沒有名為_ufuncs_cxx的模塊)

[英]pyinstaller error: cannot find scipy (No module named _ufuncs_cxx)

我正在使用pyinstaller將python腳本轉換為Ubuntu(14.04)中的二進制文件。 我使用Canopy(Enthought)管理所有python庫。

該代碼使用networkx,numpy和scipy。 這是我的規格文件:

# -*- mode: python -*-
a = Analysis(['main_test.py'],
             pathex=['/home/sean/Desktop/prog',],
             hiddenimports=[],
             hookspath=None,
             runtime_hooks=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='main_test',
          debug=False,
          strip=None,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=None,
               upx=True,
               name='main_test')

起初我得到了錯誤:

ImportError: libmkl_gf.so: cannot open shared object file: 
    No such file or directory

然后我在

/home/sean/Canopy/appdata/canopy-1.3.0.1715.rh5-x86/lib

我手動將幾個.so文件復制到dist目錄中。

但是,我得到另一個錯誤:

  File "/home/sean/Enthought/Canopy_32bit/User/lib/python2.7/site-
        packages/PyInstaller/loader/pyi_importers.py", line 409, in load_module
        module = imp.load_module(fullname, fp, filename, self._c_ext_tuple)
  File "_ufuncs.pyx", line 1, in init scipy.special._ufuncs
        (scipy/special/_ufuncs.c:21824)
ImportError: No module named _ufuncs_cxx

如何解決此錯誤? 我應該如何修改規格文件以添加這些庫和模塊?

編輯:

我找到了解決辦法。 現在的問題是:如何修改規格文件以添加.so庫? 現在,我必須手動將多個.so文件復制到dist目錄...

EDIT2

原來,我必須將其添加到COLLECT

a.binaries + ["libmkl_gf.so" , 
  "/home/sean/Canopy/appdata/canopy-1.3.0.1715.rh5-x86/lib/libmkl_gf.so", 
  "binaries"]

有什么簡單的方法可以找到隱藏的導入或庫?

謝謝

我剛從解決問題中脫穎而出。 我必須使用--hidden-import標志指定缺少的模塊。 他們很多失蹤了,但我注意到其中大多數來自scipy.integrate。 所以我指定:

pyinstaller --hidden-import=scipy.integrate --hidden-import=scipy.integrate.quadpack --hidden-import=scipy.integrate._vode bla bla bla bla -F --windowed myscript.py

很痛苦,但是很努力

您是否要嘗試將庫路徑添加到LD_LIBRARY_PATH? 就像是,

導出LD_LIBRARY_PATH = / home / sean / Canopy / appdata / canopy-1.3.0.1715.rh5-x86 / lib

要么

導出LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:/home/sean/Canopy/appdata/canopy-1.3.0.1715.rh5-x86/lib(如果已由admin設置),以便在運行時該文件夾中的所有.so都不會給出您鏈接錯誤...

哦,我明白你的意思,

導入系統

sys.path.append( 'your_lib_path')

這應該工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM