使用runpy的pyinstaller导入错误

时间:2017-10-25 11:53:01

标签: python-3.x pyinstaller

我有档案import1.py

import os
import runpy
filename = r'C:\pyinstallerTest\test.py'
runpy.run_path(filename)

档案test.py是:

import matplotlib.pyplot as plt
import numpy as np
from astroML import *
from tkinter import *

t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2*np.pi*t)
plt.plot(t, s)

plt.xlabel('time (s)')
plt.ylabel('voltage (mV)')
plt.title('About as simple as it gets, folks')
plt.grid(True)
plt.savefig(r"C:\pyinstallerTest\test.png")
plt.show()
print('hello world')

我尝试使用以下命令从import1.py

创建exe文件
pyinstaller --onefile import1.py

import1.exe文件已成功创建。但是,当我运行import1.exe文件时,我收到以下错误:

Traceback (most recent call last):
  File "import1.py", line 4, in <module>
  File "runpy.py", line 263, in run_path
  File "runpy.py", line 96, in _run_module_code
  File "runpy.py", line 85, in _run_code
  File "C:\pyinstallerTest\test.py", line 1, in <module>
    import matplotlib.pyplot as plt
ImportError: No module named 'matplotlib'
[1828] Failed to execute script import1

这对我来说更多是学习练习,所以我不是在寻找更好的方法来做事。

1 个答案:

答案 0 :(得分:1)

PyInstaller没有看到matplotlib所以它在编译时忽略它,因此在exe运行时没有看到它。尝试将其添加为隐藏导入:

pyinstaller --onefile --hidden-import=modulename import1.py

模块名称应该是它所在位置的完整路径。