Can';t从使用PyInstaller构建的Kivy应用程序中获取lexers.PythonLexer()

Can';t从使用PyInstaller构建的Kivy应用程序中获取lexers.PythonLexer(),python,kivy,pyinstaller,pygments,Python,Kivy,Pyinstaller,Pygments,我有一个Python应用程序,它运行得非常好,在它里面我做了如下操作: from pygments import lexers 然后 testing = lexers.PythonLexer() 只要运行脚本就可以了,我得到了一个PythonLexer的新实例。然而。。。当我使用PyInstaller创建应用程序的构建文件夹并运行它时,该行失败: 文件“blah\myfile”,第31行,在 AttributeError:“module”对象没有属性“PythonLexer” 有什么想法吗?

我有一个Python应用程序,它运行得非常好,在它里面我做了如下操作:

from pygments import lexers
然后

testing = lexers.PythonLexer()
只要运行脚本就可以了,我得到了一个PythonLexer的新实例。然而。。。当我使用PyInstaller创建应用程序的构建文件夹并运行它时,该行失败:

文件“blah\myfile”,第31行,在 AttributeError:“module”对象没有属性“PythonLexer”

有什么想法吗?我认为这是因为pygments在运行时以某种方式从我的PyInstaller build文件夹中丢失的一些文件中构建了它的对象,但我不太清楚如何构建


应用程序正在使用Kivy,但我实际上认为这与此问题没有太大关系。

问题在于包
pygments.lexers
中没有名为
PythonLexer.py
的文件。要解决问题,可以执行以下操作:

from pygments.lexers.agile import PythonLexer
testing = PythonLexer()

您可以使用PyInstaller的建议之一来修复它,其中包括无法自动找到的模块

我在使用
pyinstaller
打包Kivy的“showcase”演示应用程序时遇到了类似的问题

这似乎是Pygments的错误

在我修补了
\pygments\lexers\\uuuuu init\uuuuuu.py
之后,错误消失了:

--- __init__old.py
+++ __init__.py
@@ -15,6 +15,7 @@
import fnmatch
from os.path import basename

+from pygments.lexers.agile import PythonLexer
from pygments.lexers._mapping import LEXERS
from pygments.modeline import get_filetype_from_buffer

这确实解决了这个问题。但是,我需要使用PyInstaller设置来修复这个问题,而不是编辑我的文件(这个文件实际上不是我的,它在Kivy内部)。我希望hook-pygments.lexers.py文件会涵盖这一点,但是默认的hook文件已经包含了hiddenimports=['agile','dotnet'],所以我不明白为什么它不进行导入。只是想补充一下,我也遇到了这个问题,无法解决这个问题。最终我去掉了使用rstwidget和codeinput的*.kv,并修改了
main.py
以不显示源代码。。。。再一次告诉我,回到自己的评论(你知道为什么Kivy应用程序找不到PythonLexer吗?我已经安装了这些:“sudo pip install pyglet docutils”