Нет модуля с именем builtins
Я пытаюсь преобразовать мой скрипт .py в исполняемый файл с помощью py2exe. До сих пор у меня был ряд проблем, которые в основном решаются с помощью "options" в файле установки ниже. Но теперь у меня есть проблема, для которой я не смог найти решение, и мне интересно, были ли у других такие же проблемы и исправили ли они их.
Когда я выполняю файл установки ниже, используя "python setup.py py2exe" он дает мне исполняемый файл, но когда я запускаю его, он жалуется "нет модуля с именем builtins".
Единственный другой пост, который я мог найти на эту тему, указывал, что builtins-это python3, но я использую 2.7.
Ценю любые советы или подсказки по этому поводу.
from distutils.core import setup
import py2exe
from distutils.filelist import findall
import os
import matplotlib
matplotlibdatadir = matplotlib.get_data_path()
matplotlibdata = findall(matplotlibdatadir)
setup(
console=['DET14.py'],
options={
'py2exe': {
'packages' : ['matplotlib', 'pytz'],
'dll_excludes':['MSVCP90.DLL',
'libgdk-win32-2.0-0.dll',
'libgobject-2.0-0.dll',
'libgdk_pixbuf-2.0-0.dll'],
'includes':['scipy.sparse.csgraph._validation',
'scipy.special._ufuncs_cxx']
}
},
# data_files=matplotlibdata_files
data_files=matplotlib.get_py2exe_datafiles()
)
Вот полный список того, как выглядит сообщение об ошибке:
3 ответа:
Я также нашел, используя 'pip install future' решен этот вопрос
Я получил информацию отсюда: https://askubuntu.com/questions/697226/importerror-no-module-named-builtins
Я надеюсь, что это прояснит это для других пользователей, таких как я, которые наткнулись на ваш вопрос
Наконец-то у меня получилось. Оказалось, что у меня были некоторые ошибки в исходном файле установки, некоторые из которых были откровенно тупыми, а некоторые просто отражали мое непонимание того, как работают параметры команды установки. Я добавлю, что этот последний класс ошибок был разрешен только с помощью некоторого сыска в стиле Шелока Холмса и простых старых проб и ошибок. Под этим я подразумеваю, что до сих пор не нашел никакой документации, которая бы описывала значение и использование параметров установки команда. Если у кого-то есть эта информация и он может передать ее, это будет очень ценно.
С этим в качестве фона, вот ответ:
Было 2 основных проблемы:
Список пакетов в файле установки aboe был прискорбно неполным. Я все еще не уверен, что правило состоит в том, что вы должны перечислить каждый отдельный пакет, на который полагается ваша программа, и некоторые из них, на которые она может полагаться, о которых вы не знали (например, pytz...). Но когда я это сделал ... в тот момент у меня было кое-что, что я мог бы в конце концов получить на работу.
Сообщение об ошибке в приведенном выше исходном вопросе выглядит так, как будто моя программа зависела от вещи под названием "patsy", и это смутило меня, потому что я понятия не имел, что это такое, но оказалось, что statsmodels (whihc является ядром моего проекта) имеет зависимость от patsy, поэтому его нужно было включить в список "пакеты".
Ниже приведен установочный файл, который в конечном итоге работал. Я надеюсь это описание логики, лежащей в основе исправления, оказывается полезным для других людей, сталкивающихся с такой же проблемой.
from distutils.core import setup import py2exe from distutils.filelist import findall import os import matplotlib matplotlibdatadir = matplotlib.get_data_path() matplotlibdata = findall(matplotlibdatadir) setup( console=['DET14.py'], options={ 'py2exe': { 'packages' : ['matplotlib', 'pytz','easygui',\ 'statsmodels','pandas','patsy'], 'dll_excludes':['MSVCP90.DLL', 'libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'libgdk_pixbuf-2.0-0.dll'], 'includes':['scipy.sparse.csgraph._validation', 'scipy.special._ufuncs_cxx'] } }, data_files=matplotlib.get_py2exe_datafiles() )
Запуск
pip install future
исправил эту ошибку для меня. Для совместимости с Python2. 7, пакет future должен быть добавлен к install_requires в setup.py.Обратите внимание, что
nosetests
также терпит неудачу без matplotlib, но я не уверен, что добавление matplotlib в качестве зависимости имеет большой смысл.