我正在使用pyinstaller將python腳本轉換爲Ubuntu(14.04)中的二進制文件。我使用Canopy(Enthought)來管理所有的python庫。pyinstaller錯誤:找不到scipy(沒有名爲_ufuncs_cxx的模塊)
該代碼使用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
然後我發現.so庫中
/home/sean/Canopy/appdata/canopy-1.3.0.1715.rh5-x86/lib
我手動複製幾個.so文件到發展方向。
但是,我得到了另一個錯誤:
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
如何解決這個問題?我應該如何修改spec文件來添加這些庫和模塊?
編輯:
我發現solutuion。我現在的問題是:如何修改spec文件來添加.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"]
是有沒有簡單的方法來找到隱藏的導入或庫?
謝謝