我有一个简单的脚本来绘制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
,但这是我第一次遇到这种错误。
答案 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)