Один исполняемый файл с Py2Exe

Я пытаюсь сделать один исполняемый файл, и я приближаюсь. Пожалуйста, не рекомендуется использовать PyInstaller – я пробовал этот маршрут, спросил здесь , и добавил билеты. Он близок, но не совсем работает. Я теперь пытаюсь py2exe, и я тоже очень близко. В pyinstaller я могу создавать файлы ресурсов (который создает исполняемый файл с включенными файлами – я могу получить к ним доступ во временной папке).

Я хочу сделать то же самое для py2exe. У меня есть один исполняемый файл, но пять дополнительных папок (карты, mpl-данные, данные, фотографии и tcl). Я видел этот вопрос, но, похоже, не понимаю его и не должен работать. В моем основном файле py я использую PersistentDict(filepath) путь к файлу PersistentDict(filepath) котором мне нужен путь к файлу.

Мой вопрос состоит из двух частей: 1. Как получить файлы (файлы данных ниже), упакованные в исполняемый файл. 2. Как получить доступ к этим файлам в моем коде и вернуть их путь (в виде строки), например /temp/file1.jpg.

Вот мой код для моего установочного файла py2exe – обратите внимание, что у меня есть matplotlib и должен корректно включать mpl-data в мой исполняемый файл. Благодаря!

 from distutils.core import setup import py2exe import shutil import glob import matplotlib,six opts = {'py2exe': { "includes" : ["matplotlib.backends", "matplotlib.backends.backend_qt4agg", "matplotlib.figure","numpy", "six", "mpl_toolkits.basemap", "matplotlib.backends.backend_tkagg"], 'excludes': ['_gtkagg', '_tkagg','_agg2','_cairo', '_cocoaagg', '_fltkagg', '_gtk', '_gtkcairo', 'tcl' ], 'dll_excludes': ['libgdk-win32-2.0-0.dll','w9xpopen.exe', 'libgobject-2.0-0.dll'], 'bundle_files': 1, 'dist_dir': "Dist Folder", 'compressed': True, } } data_files = [(r'mpl-data', glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\*.*')), (r'mpl-data', [r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\matplotlibrc']), (r'mpl-data\images',glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\images\*.*')), (r'mpl-data\fonts',glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\fonts\*.*')), (r'mpl-data\data', glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\data\*.*')), ('data', ['C:\\Users\\Me\\Documents\\Example_Json_File.json']), ('pics', ['C:\\Users\\Me\\Documents\\Example_Icon.ico', 'C:\\Users\\Me\\Documents\\Example_Jpg.jpg', ])] setup(windows=[{"script" : "MyMainScript.py", "data_files" : data_files, "icon_resources": [(1, 'C:\\Users\\Me\\Documents\\Example_Icon.ico')]}, ], version = "1.0", options=opts, data_files=data_files, zipfile = None, ) 

2 Solutions collect form web for “Один исполняемый файл с Py2Exe”

Гай объясняет, как упаковать в один файл с py2exe. Он не устанавливает пакеты внутри исполняемого файла.

Когда я упаковываю свои приложения, я не использую один исполняемый файл

 options = {"py2exe": {'bundle_files': 1, 'compressed': True}}, 

даже не потрудились поместить их в library.zip через

 options = {"py2exe": {"skip_archive":0}} 

Просто укажите несколько файлов pic, файлов данных, dll и т. Д. В одном каталоге. Затем создайте установщик, используя NSIS или установку Inno. Поскольку некоторые из моих приложений должны работать как службы, Inno заботился об этом. Самый большой плюс этого подхода, вам не нужно иметь дело с «замороженными» путями к вашим файлам, которые отличаются от ваших исходных путей.

В противном случае вам может потребоваться изменить код для обнаружения замороженных путей, например http://www.py2exe.org/index.cgi/WhereAmI

Я видел пакетный конвертер EXE (Advanced Batch to EXE Converter), но это странно: это позволит вам помещать файлы в каталог «bake», и ими можно управлять с помощью «% MYFILES% \ [путь] "каталог / переменная. Если у вас есть комната для маневра, проверьте это. Единственная проблема заключается в том, что он добавит в файл «intro» (чтение: прославленная флеш-анимация), и он отобразит FIRST. (Я против пиратства, но с ним все в порядке … «Вступление» – 45 секунд и неприятно.)

Если это вас не испугает, попробуйте сделать это.

  • Python - превратить содержимое файла в двоичный массив
  • Установка данных инструментария на естественном языке
  • как вы можете отображать изображение на gui, используя tk в python2.7
  • Что делает из __future__ import absolute_import на самом деле?
  • Юникодное регулярное выражение для соответствия символьному классу китайских символов
  • python manage.py migrate не работает на anaconda
  • Почему Python 2 позволяет сравнивать списки и номера?
  • экстраполяция данных с помощью numpy / python
  • Python: относительный импорт без пакетов или модулей
  • Python 3 метод обновления словаря карты к списку других словарей
  • Установка Openalpr в Windows python
  • Python - лучший язык программирования в мире.