Я пытаюсь использовать py2exe для создания исполняемого файла на 64-разрядной Windows 7 с Anaconda (Python 3.4) для моего проекта, который зависит от большого количества библиотек. Некоторые из более сложных включают vispy (pyopengl), PyQt4, numba и scipy. Я пытался выполнить различные ошибки, чтобы попытаться получить рабочий исполняемый файл, но попал в дорожный блок без четкого пути вперед. В настоящее время py2exe команда завершается, но я получаю следующее сообщение об ошибке при запуске EXE-файла:py2exe «Нет модуля с именем« сайт »из Anaconda
...
from numba import jit
File "C:\Anaconda3\envs\sift_py2exe\lib\site-packages\numba\__init__.py", line
13, in <module>
from .pycc.decorators import export, exportmany
File "C:\Anaconda3\envs\sift_py2exe\lib\site-packages\numba\pycc\__init__.py",
line 12, in <module>
from .cc import CC
File "C:\Anaconda3\envs\sift_py2exe\lib\site-packages\numba\pycc\cc.py", line
4, in <module>
from distutils.command import build_ext
File "C:\Anaconda3\envs\sift_py2exe\lib\distutils\command\build_ext.py", line
17, in <module>
from site import USER_BASE
ImportError: No module named 'site'
Я был в состоянии сделать небольшое временное решение, добавив C:\Anaconda3\envs\sift_py2exe\Lib
каталог в sys.path
в моем основном сценарии, но я сомневаюсь, что это будет чтобы помочь мне намного позже. Не говоря уже о том, что после этого у меня были более скудные DLL-проблемы.
Вот соответствующие части моего setup.py:
try:
import py2exe
from llvmlite.binding.ffi import _lib_dir, _lib_name
kwargs["data_files"] = [('.', [os.path.join(_lib_dir, _lib_name), os.path.join(_lib_dir, "MSVCP120.dll"), os.path.join(_lib_dir, "MSVCR120.dll")])]
kwargs["console"] = [{
'script': 'cspov/__main__.py',
'dest_base': "SIFT",
}]
kwargs["options"] = {'py2exe': {"includes": ["vispy.app.backends._pyqt4", "PyQt4.QtNetwork"]}}
except ImportError:
print("'py2exe' and/or 'llvmlite' not available")
я пытался добавить директорию «Lib» в setup.py, а затем в том числе «сайт», но не найти модуль. Есть идеи? Благодарю.
Замечание: Я использую DLL-файлы Microsoft из llvmlite в качестве быстрого обходного пути, потому что я не мог заставить его работать ни в одном из обычных способов.