我写了一个文件pwrapper.py
,它导入了我写的packageapi
的另一个包。 packageapi在以下指令中使用inspect模块
print (inspect.getouterframes(inspect.currentframe())[1])
我使用pyinstaller冻结了pwrapper.py。
当我从命令行启动pwrapper.exe
时,一切正常。我得到了输出
<frame object at 0x01234567> pwrapper.py 19 new_table [' packageapi.function()'] 0
但是,当我通过双击启动pwrapper.exe
时,我得到以下输出
<frame object at 0x01234567> pwrapper.py 19 new_table None None
当我双击exe时,为什么当控件从pwrapper传递给packageapi.function时框架是否包含行和索引?我发现从命令行运行exe时它表现得很好很奇怪。显然有一些我不明白的东西。有人可以帮我修复它。
非常感谢你!
答案 0 :(得分:0)
我得到了它的工作。事实证明,我必须将所有源代码复制到相同的目录结构中,但要复制到builds文件夹中,它现在可以正常工作。我希望pyinstaller会这样做,如果这是必须的!
答案 1 :(得分:0)
使用带有一些添加行的预构建.spec文件运行pyinstaller可以在构建exe时自动复制源代码。
没有.spec文件?
通过pyinstaller运行.py文件将自动创建.spec文件。
如果您不想处理所有内容并只是制作.spec文件,请运行此 -
pyi-makespec pwrapper.py
然后修改.spec文件,类似于此(Windows示例) -
addedFiles = {
('README.md','.'),
('folder\\specific.file','folder\\.'),
('folder2\\subFolder\\*.ext','folder2\\subFolder\\.'),
('fullFolder\\*','fullFolder\\.'),
}
a = Analysis([...]
datas=addedFiles ,
[...])
然后运行pyinstaller,将其指向.spec文件而不是.py文件
pyinstaller pwrapper.spec
您可以在此处查看我使用此方法的示例 - pxlViewer.spec