如何解决如果未激活原始conda环境,则在调用matplotlib.pyplot.subplots时,由PyInstaller创建的可执行文件将关闭且没有错误
我正在尝试使用PyInstaller创建可执行文件,但是在使用matplotlib时遇到了麻烦。从IDE运行代码时,它会按预期运行。创建可执行文件并从命令提示符运行后,程序在创建子图时会死掉。但是,如果我激活编写该程序的conda环境,则该程序会运行。这不是理想的选择,因为我希望分发完成的程序而无需用户担心Python或Anaconda。
我假设PyInstaller缺少一些文件,我需要将它们添加到我的spec文件的datas
部分,但是我无法弄清楚哪些文件。
这是我从matplotlib网站获得的一些代码,导致发生相同的问题:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,2 * np.pi,400)
y = np.sin(x ** 2)
fig,ax = plt.subplots()
ax.plot(x,y)
ax.set_title('A single plot')
plt.show()
这是我的Pyinstaller规格文件:
# -*- mode: python ; coding: utf-8 -*-
from PyInstaller.utils.hooks import exec_statement
block_cipher = None
mpl_data_dir = exec_statement(
"import matplotlib; print(matplotlib._get_data_path())")
a = Analysis(['main.py'],pathex=['C:\\Users\\rwardrup\\PycharmProjects\\MPLTest'],binaries=[],datas=[(mpl_data_dir,'matplotlib\\mpl-data')],hiddenimports=[],hookspath=[],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)
pyz = PYZ(a.pure,a.zipped_data,cipher=block_cipher)
exe = EXE(pyz,a.scripts,[],exclude_binaries=True,name='MPLTest',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=True )
coll = COLLECT(exe,a.binaries,a.zipfiles,a.datas,upx_exclude=[],name='MPLTest')
我做了一些挖掘,并在Matplotlib的fig.py中,使用了subplots
方法,
self.add_gridspec(nrows,ncols,figure=self,**gridspec_kw).subplots(sharex=sharex,sharey=sharey,squeeze=squeeze,subplot_kw=subplot_kw)
没有返回任何东西。
self.add_gridspec(nrows,**gridspec_kw).subplots
本身可以。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。