我有一个非常好用的Python应用程序,其中我做了类似的事情:
from pygments import lexers
...然后
testing = lexers.PythonLexer()
运行脚本效果很好,我得到了一个PythonLexer的新实例。但是......当我使用PyInstaller为应用程序创建构建文件夹然后运行它时,该行失败:
文件" blah \ myfile",第31行,在__init__ AttributeError:'模块' object没有属性' PythonLexer'
有什么想法吗?我认为这是因为pygments以某种方式在运行时从我的PyInstaller构建文件夹中缺少的某些文件构建其对象,但我不太清楚如何。
该应用正在使用Kivy,但实际上我并不认为这个问题太多了。
答案 0 :(得分:2)
问题是包pygments.lexers
不包含名为PythonLexer.py
的文件。要解决问题,您可以这样做:
from pygments.lexers.agile import PythonLexer
testing = PythonLexer()
答案 1 :(得分:1)
您可以使用PyInstaller的一个建议来修复它,以包含自动找不到的模块。 http://pythonhosted.org/PyInstaller/#helping-pyinstaller-find-modules
答案 2 :(得分:0)
使用pyinstaller
打包Kivy的“showcase”演示应用时遇到了类似的问题。
这似乎是一个Pygments错误。
修补\pygments\lexers\__init__.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