![](/img/trans.png)
[英]PyInstaller error: ModuleNotFoundError: No module named 'statsmodels.__init__._version'
[英]Error when using statsmodels with pyinstaller
我遇到了PyInstaller和statsmodels
問題。 當我運行可執行文件時,我收到錯誤ImportError: No module named 'statsmodels.__init__.tools'
,當我直接用Python運行代碼時,一切正常。
我試過這個解決方案 。
我嘗試添加statsmodels
, statsmodels.__init__
和statsmodels.__init__._version
,但它也沒有用。
statsmodels
是statsmodels
的復雜模塊之一,因為它依賴於其他一些模塊,它們會混淆PyInstaller導入圖。 我的解決方案可能看起來不是優化但可以完成工作。
hidden-imports
只會告訴PyInstaller查找該模塊,但有時它無法跟蹤模塊依賴(如DLL,外部py文件等)。 所以對於statsmodels
來說它無濟於事。
整個過程是首先告訴PyInstaller不要使用exclude-module
跟蹤statsmodels
,並手動將模塊提供給最終的可執行文件。 此外,我們需要將一些模塊(如numpy
, pandas
等)與Tree
類捆綁在一起。
我正在使用Python 3.7.4和最新的PyInstaller 3.5。 假設以下示例來自官方文檔 。
import numpy as np
import statsmodels.api as sm
import statsmodels.formula.api as smf
dat = sm.datasets.get_rdataset("Guerry", "HistData").data
results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit()
print(results.summary())
使用下面的spec文件(我在腳本旁邊使用Python的名為env
的venv )
# -*- mode: python -*-
block_cipher = None
a = Analysis(['script.py'],
pathex=['<root_project_path>'],
binaries=[],
datas=[],
hiddenimports=['six', 'fractions', 'csv', 'pytz', 'timeit'],
hookspath=[],
runtime_hooks=[],
excludes=['statsmodels'],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
a.datas += Tree("./env/Lib/site-packages/statsmodels", prefix="statsmodels")
a.datas += Tree("./env/Lib/site-packages/numpy", prefix="numpy")
a.datas += Tree("./env/Lib/site-packages/pandas", prefix="pandas")
a.datas += Tree("./env/Lib/site-packages/scipy", prefix="scipy")
a.datas += Tree("./env/Lib/site-packages/dateutil", prefix="dateutil")
a.datas += Tree("./env/Lib/site-packages/patsy", prefix="patsy")
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='script',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False,
runtime_tmpdir=None,
console=True )
最后生成您的可執行文件:
pyinstaller script.spec
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.