Не удается получить lexers.PythonLexer() из приложения Kivy, созданного с помощью PyInstaller
У меня есть приложение Python, которое работает очень хорошо, внутри которого я делаю что-то вроде:
from pygments import lexers
затем...
testing = lexers.PythonLexer()
Просто запуск скрипта работает отлично, и я получаю новый экземпляр PythonLexer. Однако... когда я создаю папку сборки для приложения с помощью PyInstaller, а затем запускаю ее, эта строка завершается ошибкой:
Файл "blah\myfile", строка 31, в __init__ AttributeError: у объекта 'module' нет атрибута 'PythonLexer'
Есть идеи? Я думаю, это потому, что pygments каким-то образом создает свои объекты во время выполнения из некоторых файлов, которые отсутствуют в моей папке сборки PyInstaller, но я не совсем понимаю, как это сделать.
Приложение использует Kivy, но на самом деле я не думаю, что это связано с этой проблемой.
3 ответа
Проблема в том, что пакет pygments.lexers
не содержит файл с именем PythonLexer.py
, Чтобы решить проблему, вы можете сделать это:
from pygments.lexers.agile import PythonLexer
testing = PythonLexer()
Вы можете исправить это, воспользовавшись одним из предложений PyInstaller по включению модулей, которые не были найдены автоматически. http://pythonhosted.org/PyInstaller/
Я столкнулся с подобной проблемой при использовании pyinstaller
упаковать демонстрационное приложение Kivy'витрина'.
Кажется, это ошибка 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