使用PyInstaller创建的Python可执行文件无法运行

时间:2016-12-04 23:16:18

标签: python matplotlib executable pyinstaller

我有一个简单的脚本来绘制ROC曲线(使用struct Item_Node { int level; int profit; int weight; float bound (Item_Node u) const { int j,k; int totweight; float result; if(u.weight>=W) {return 0;} else { result=u.profit; j=u.level+1; totweight=u.weight; while(j<=n && totweight+w[j]<=W) { totweight=totweight+w[j]; result=result+p[j]; j++; } k=j; if(k<=n) {result=result+(W-totweight)*(p[k]/w[k]);} return result; } } } bool operator<(const Item_Node & ) const; }; bool Item_Node:: operator<(const Item_Node & right) const {return bound()< right.bound();} sklearn)。我使用matplotlib从此脚本创建可执行文件。脚本本身运行完美,但可执行文件给了我这个错误:

  

没有名为'tkinter'的模块

我尝试了什么:

1)重新创建没有PyInstaller标志的可执行文件(如果缺少任何.dll)(失败)

2)在我的脚本中手动导入--onefile(FAILED)

实际上,当我添加tkinter时,错误已更改为(如果重要):

  

没有名为'tkinter.filedialog'的模块

我很困惑。我多次使用import tkinter,但这是我第一次遇到这种错误。

1 个答案:

答案 0 :(得分:0)

修改.spec文件并将模块的路径放在&#39; pathex&#39; (关于分析)。您可以使用module.__file__发现正确的模块路径。 在你的情况下:

>>> import tkinter.filedialog
>>> tkinter.filedialog.__file__
'/usr/lib/python3.5/tkinter/filedialog.py'

在.spec文件中:

 a = Analysis(['main.py'],
                 pathex=['/usr/lib/python3.5/tkinter/'],
                 binaries=None,
                 datas=None,
                 hiddenimports=[],
                 hookspath=[],
                 runtime_hooks=[],
                 excludes=[],
                 win_no_prefer_redirects=False,
                 win_private_assemblies=False,
                 cipher=block_cipher)