exe文件启动,但以ModuleNotFoundError: No module named 'numpy.random.common'
我使用pyinstaller --onefile hello.py --hidden-import pandas
和
.exe文件失败。
我试图通过添加路径到pandas
来更改规格文件
,但.exe文件仍然失败。
hello.py 文件的内容:
import os
input("before loading pandas")
import pandas
print ("hello")
input('waiting for keyboard input')
规范文件的内容:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
def get_pandas_path():
import pandas
pandas_path=pandas.__path__[0]
return pandas_path
a = Analysis(['CreateExcelSAList.py'],
pathex=['D:\\OneDrive - Ardovlam NV\\15. Python\\hello'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
dict_tree=Tree(get_pandas_path(),prefix='pandas',excludes=["*.pyc"])
a.datas+=dict_tree
a.binaries=filter(lambda x:'pandas' not in x[0], a.binaries)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='hello',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True )
scoll=COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=None,
upx=True,
name='hello')
答案 0 :(得分:0)
似乎是一个已知的错误。请检查:https://github.com/numpy/numpy/issues/14163。在stackoverflow中有一个解决方案的参考。
答案 1 :(得分:0)
我有解决方案,在这里找到 In PyInstaller, Why Won't NumPy.Random.Common Load as a Module?
在我将hello.py中导入熊猫之前,我已经在下面导入了东西
import numpy.random.common
import numpy.random.bounded_integers
import numpy.random.entropy
运行pyinstaller hello.py后,我的exe文件正在按预期运行
在另一个程序中,导入numpy库是不够的,我还必须使用“ hiddenimports”更改xx.spec文件。
hiddenimports=['numpy.random.common','numpy.random.entropy','numpy.random.bounded_integers'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)