я использовал pyinstaller перед тем, чтобы попытаться получить мое приложение с витыми как исполняемый файл, но я получил эту ошибку при выполнении:ImportError с cx_Freeze и pyinstaller
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/cx_Freeze/initscripts/Console.py", line 27, in <module>
exec code in m.__dict__
File "client_test.py", line 2, in <module>
File "/usr/local/lib/python2.7/dist-packages/Twisted-13.0.0-py2.7-linux-x86_64.egg/twisted/__init__.py", line 53, in <module>
_checkRequirements()
File "/usr/local/lib/python2.7/dist-packages/Twisted-13.0.0-py2.7-linux-x86_64.egg/twisted/__init__.py", line 37, in _checkRequirements
raise ImportError(required + ": no module named zope.interface.")
ImportError: Twisted requires zope.interface 3.6.0 or later: no module named zope.interface.
Итак, я попытался с помощью cx_freeze, но я получить ту же ошибку точный, даже при использовании 'namespace_packages': ['zope']
как this example.
От того, где я создаю исполняемый файл, я могу открыть интерпретатор питона и Устпешно импорта zope.interface, и я установил его через easy_install
, а затем побежал pip install -U zope.interface
позже, которая не имела никакого эффекта.
Вот мой setup.py
для cx_freeze:
import sys
from cx_Freeze import setup, Executable
# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {"excludes": ["tkinter"],
'namespace_packages':['zope'],
'append_script_to_exe':True
}
setup( name = "exetest",
version = "0.1",
description = "My first executable",
options = {"build_exe": build_exe_options},
executables = [Executable("client_test.py")])
EDIT 1: Забыл упомянуть, что я также попытался положить пустой __init__.py
файл под zope.interface
, а также не помогло.
EDIT 2: При использовании cx_freeze внутри library.zip папки сборки, zope.interface находится там, и я не думаю, что какой-либо из модулей не хватает, но я все еще получаю ImportError
Это с выхода cx_freeze:
Missing modules:
? _md5 imported from hashlib
? _sha imported from hashlib
? _sha256 imported from hashlib
? _sha512 imported from hashlib
? builtins imported from zope.schema._compat
? ctypes.macholib.dyld imported from ctypes.util
? dl imported from OpenSSL
? html imported from twisted.web.server
? netbios imported from uuid
? ordereddict imported from zope.schema._compat
? queue imported from twisted.internet.threads
? twisted.python._epoll imported from twisted.internet.epollreactor
? twisted.python._initgroups imported from twisted.python.util
? urllib.parse imported from twisted.web.server
? win32wnet imported from uuid
? wsaccel.utf8validator imported from autobahn.utf8validator
? zope.i18nmessageid imported from zope.schema._messageid
? zope.testing.cleanup imported from zope.schema.vocabulary
EDIT 3: Вот вывод sys.path из моего исполняемого файла (укороченный с ..
)
['../build/exe.linux-x86_64-2.7/client_test',
'../build/exe.linux-x86_64-2.7',
'../build/exe.linux-x86_64-2.7/client_test.zip',
'../build/exe.linux-x86_64-2.7/library.zip']
Вот ошибка, я получаю, когда я импортировать zope.interface
непосредственно:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/cx_Freeze/initscripts/Console.py", line 27, in <module>
exec code in m.__dict__
File "client_test.py", line 3, in <module>
File "/usr/local/lib/python2.7/dist-packages/zope.schema-4.3.2-py2.7.egg/zope/__init__.py", line 1, in <module>
__import__('pkg_resources').declare_namespace(__name__)
ImportError: No module named pkg_resources
После добавления pkg_resources
к моему включает в моей cx_freeze setup.py, программа побежал
А что, если вы добавите '' пакеты ': [' zope.interface '] 'в ваш' build_exe_options'? –
Пробовал это уже, ту же точную ошибку. Я даже добавил его в 'include' и' namespace_packages' одновременно. –
Установлен ли он в директорию .egg? Иногда cx_Freeze испытывает проблемы с поиском предметов в яйцах (хотя кажется, что они были искажены). –