Как я могу связывать другие файлы при использовании CX freeze?


я использую Python 2.6 и cx_Freeze 4.1.2 в системе Windows. Я создал setup.py чтобы построить мой исполняемый файл и все работает нормально.

когда cx_Freeze работает, он перемещает все в . У меня есть некоторые другие файлы, которые я хотел бы включить в мой . Как я могу это сделать? Вот моя структура:

src
    setup.py
    janitor.py
    README.txt
    CHNAGELOG.txt
    helpers
        uncompress
            unRAR.exe
            unzip.exe

вот мой фрагмент:

настройка

( name='Janitor',
  version='1.0',
  description='Janitor',
  author='John Doe',
  author_email='john.doe@gmail.com',
  url='http://www.this-page-intentionally-left-blank.org/',
  data_files = 
      [ ('helpersuncompress', ['helpersuncompressunzip.exe']),
        ('helpersuncompress', ['helpersuncompressunRAR.exe']),
        ('', ['README.txt'])
      ],
  executables =
      [
      Executable
          (
          'janitor.py', #initScript
          )
      ]
)

кажется, я не могу получить это работа. Мне нужен ?

4 51

4 ответа:

разобрался.

from cx_Freeze import setup,Executable

includefiles = ['README.txt', 'CHANGELOG.txt', 'helpers\uncompress\unRAR.exe', , 'helpers\uncompress\unzip.exe']
includes = []
excludes = ['Tkinter']
packages = ['do','khh']

setup(
    name = 'myapp',
    version = '0.1',
    description = 'A general enhancement utility',
    author = 'lenin',
    author_email = 'le...@null.com',
    options = {'build_exe': {'includes':includes,'excludes':excludes,'packages':packages,'include_files':includefiles}}, 
    executables = [Executable('janitor.py')]
)

Примечание:

  • include_files должен содержать "только" относительные пути к setup.py скрипт иначе сборка завершится неудачно.
  • include_files может быть список строк, т. е. куча файлов с их относительными путями
    или
  • include_files может быть список кортежей, в котором первая половина кортежа-это имя файла с абсолютным путем, а вторая половина-имя файла с абсолютным путь.

(когда возникает отсутствие документации, обратитесь к лягушке Кермит)

есть более сложный пример:cx_freeze-wxPyWiki

недостающая документация по всем параметрам находится по адресу:cx_Freeze (интернет-архив)

С cx_Freeze, Я все еще получаю вывод сборки из 11 файлов в одной папке, хотя, в отличие от Py2Exe.

варианты: Упаковка / Мышь Vs. Python

чтобы найти вложенные файлы (include_files = [-> your attached files <-]) вы должны вставить следующую функцию в свой setup.py код:

def find_data_file(filename):
    if getattr(sys, 'frozen', False):
        # The application is frozen
        datadir = os.path.dirname(sys.executable)
    else:
        # The application is not frozen
        # Change this bit to match where you store your data files:
        datadir = os.path.dirname(__file__)

    return os.path.join(datadir, filename)

см. CX-freeze: использование файлов данных

также можно создать отдельный скрипт, который будет копировать файлы после сборки. Это то, что я использую, чтобы перестроить приложение на windows (вы должны иметь "GNU utilities for win32" установлен, чтобы сделать "cp" работает).

построить.летучая мышь:

cd .
del build\*.* /Q
python setup.py build
cp -r icons build/exe.win32-2.7/
cp -r interfaces build/exe.win32-2.7/
cp -r licenses build/exe.win32-2.7/
cp -r locale build/exe.win32-2.7/
pause