Ответ 1
из настройки импорта distutils.core
import py2exe
Настройка (консоль = [ 'hello.py'])
изменить: не включать другие библиотеки/модули здесь
СЛЕД. на cmd:
python hello.py py2exe
Это мой первый пост, так что легко на меня. Моя проблема схожа, как здесь, но я не мог заставить ее работать, хотя я действительно пытался: "py2exe с enthought и pandas".
Установив отдельно обе версии python (x84-64, x32) с библиотеками, я перешел к созданию исполняемого файла python script с помощью py2exe.
Мне пришлось скачать отсутствующие файлы dll: msvcp90.dll, libiomp5md.dll, libifcoremd.dll, libmmd.dll.
Exe файлы Я создал обратные ошибки и генерируется файл журнала - разный для библиотек python и x32 и x64.
Для 32-битных библиотек python я получил следующие файлы журналов (разные, в зависимости от того, какую библиотеку numpy я установил из: http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy)
Для numpy-1.8.0-win32-superpack-python2.7 я получил многократную следующую информацию:
File "gui.py", line 7, in <module>
File "pyqtgraph\__init__.pyc", line 177, in <module>
File "pyqtgraph\__init__.pyc", line 167, in importAll
File "pyqtgraph\__init__.pyc", line 159, in importModules
Traceback (most recent call last):
File "gua.py", line 7, in <module>
File "pyqtgraph\__init__.pyc", line 180, in <module>
File "pyqtgraph\imageview\__init__.pyc", line 6, in <module>
File "pyqtgraph\imageview\ImageView.pyc", line 20, in <module>
File "pyqtgraph\imageview\ImageViewTemplate_pyqt.pyc", line 159, in <module>
File "pyqtgraph\widgets\PlotWidget.pyc", line 10, in <module>
File "pyqtgraph\graphicsItems\PlotItem\__init__.pyc", line 1, in <module>
File "pyqtgraph\graphicsItems\PlotItem\PlotItem.pyc", line 32, in <module>
File "pyqtgraph\graphicsItems\PlotDataItem.pyc", line 4, in <module>
File "pyqtgraph\graphicsItems\PlotCurveItem.pyc", line 4, in <module>
File "scipy\stats\__init__.pyc", line 324, in <module>
File "scipy\stats\stats.pyc", line 242, in <module>
File "scipy\special\__init__.pyc", line 531, in <module>
File "scipy\special\_ufuncs.pyc", line 12, in <module>
File "scipy\special\_ufuncs.pyc", line 10, in __load
File "_ufuncs.pyx", line 1, in init scipy.special._ufuncs (scipy\special\_ufuncs.c:19840)
ImportError: No module named _ufuncs_cxx
Для numpy-MKL-1.8.0.win32-py 2.7:
Traceback (most recent call last):
File "gui.py", line 2, in <module>
File "numpy\__init__.pyc", line 154, in <module>
File "numpy\add_newdocs.pyc", line 9, in <module>
File "numpy\lib\__init__.pyc", line 13, in <module>
File "numpy\lib\polynomial.pyc", line 17, in <module>
File "numpy\linalg\__init__.pyc", line 48, in <module>
File "numpy\linalg\linalg.pyc", line 23, in <module>
File "numpy\linalg\lapack_lite.pyc", line 12, in <module>
File "numpy\linalg\lapack_lite.pyc", line 10, in __load
ImportError: DLL load failed: %1 is not a valid Win32 application.
Для numpy-MKL-1.7.2rc1.win32-py2.7 я получил, как указано выше, но умножился.
Для 64-битных библиотек python & b я получил следующее, независимо от scipy и numpy версии:
File "gui.py", line 7, in <module>
File "pyqtgraph\__init__.pyc", line 177, in <module>
File "pyqtgraph\__init__.pyc", line 167, in importAll
File "pyqtgraph\__init__.pyc", line 159, in importModules
Traceback (most recent call last):
File "pyqtgraph\__init__.pyc", line 155, in importModules
File "pyqtgraph\graphicsItems\PlotDataItem.pyc", line 4, in <module>
File "pyqtgraph\graphicsItems\PlotCurveItem.pyc", line 4, in <module>
File "scipy\stats\__init__.pyc", line 324, in <module>
File "scipy\stats\stats.pyc", line 242, in <module>
File "scipy\special\__init__.pyc", line 531, in <module>
File "scipy\special\_ufuncs.pyc", line 12, in <module>
File "scipy\special\_ufuncs.pyc", line 10, in __load
File "_ufuncs.pyx", line 1, in init scipy.special._ufuncs (scipy\special\_ufuncs.c:19992)
ImportError: No module named _ufuncs_cxx
У меня есть некоторые файлы ufuncs в.. \build\bdist.win-amd64\winexe\collect-2.7\scipy\special, но я не уверен, как это работает или должно работать.
Итак, что мне делать, чтобы заставить любой из этих .exe работать? Предпочтительно, тот, который идет с 64-битным питоном, потому что открытие программы путем запуска кода в SciTe с 32-разрядным питоном занимает много времени, и произошла перегрузка памяти.
EDIT:
После удаления import numpy, pyqtgraph, scipy
из setup.py я получаю следующий файл журнала с ошибками:
File "gui.py", line 7, in <module>
File "pyqtgraph\__init__.pyc", line 177, in <module>
File "pyqtgraph\__init__.pyc", line 167, in importAll
File "pyqtgraph\__init__.pyc", line 159, in importModules
Traceback (most recent call last):
File "pyqtgraph\__init__.pyc", line 155, in importModules
File "pyqtgraph\graphicsItems\PlotDataItem.pyc", line 4, in <module>
File "pyqtgraph\graphicsItems\PlotCurveItem.pyc", line 2, in <module>
File "scipy\fftpack\__init__.pyc", line 97, in <module>
File "scipy\fftpack\basic.pyc", line 12, in <module>
File "scipy\fftpack\_fftpack.pyc", line 12, in <module>
File "scipy\fftpack\_fftpack.pyc", line 10, in __load
ImportError: DLL load failed: %1 is not a valid Win32 application.
из настройки импорта distutils.core
import py2exe
Настройка (консоль = [ 'hello.py'])
изменить: не включать другие библиотеки/модули здесь
СЛЕД. на cmd:
python hello.py py2exe
У меня больше успеха с PyInstaller, чем у Py2exe. В PyInstaller проблема решается путем явного добавления ссылки:
pyinstaller myscript.py --hidden-import=scipy.special._ufuncs_cxx
PyInstaller также заботится о matplotlib imbroglio и DLL Visual Studio.
Я получил то же сообщение об ошибке во время создания файла .exe с помощью py2exe
File "_ufuncs.pyx", line 1, in init scipy.special._ufuncs (scipy\special\_ufuncs.c:22830)
Это было разрешено добавлением scipy.special._ufuncs_cxx
в параметр includes
в файле setup.py.
Вот что я имею.
from distutils.core import setup
import py2exe
import numpy
setup(
console=['hello.py'],
options={
'py2exe': {
r'includes': [r'scipy.sparse.csgraph._validation',
r'scipy.special._ufuncs_cxx']
}
}
)
Обратите внимание, что он содержит некоторые другие настройки для предотвращения ошибок, связанных с numpy/scipy.
scipy.sparse.csgraph._validation
на основе этого ответа