tutorial instalar cx_freeze python distutils cx-freeze

python - instalar - cx_freeze tutorial



¿Cómo puedo agrupar otros archivos cuando uso cx_freeze? (4)

Estoy usando Python 2.6 y cx_Freeze 4.1.2 en un sistema Windows. Creé setup.py para construir mi ejecutable y todo funciona bien.

Cuando se ejecuta cx_Freeze, mueve todo al directorio de build . Tengo algunos otros archivos que me gustaría incluir en mi directorio de build . ¿Cómo puedo hacer esto? Aquí está mi estructura:

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

Aquí está mi fragmento:

preparar

( name=''Janitor'', version=''1.0'', description=''Janitor'', author=''John Doe'', author_email=''[email protected]'', url=''http://www.this-page-intentionally-left-blank.org/'', data_files = [ (''helpers/uncompress'', [''helpers/uncompress/unzip.exe'']), (''helpers/uncompress'', [''helpers/uncompress/unRAR.exe'']), ('''', [''README.txt'']) ], executables = [ Executable/ ( ''janitor.py'', #initScript ) ] )

Parece que no puedo hacer que esto funcione. ¿Necesito un archivo MANIFEST.in ?



Lo averigué.

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 = ''[email protected]'', options = {''build_exe'': {''includes'':includes,''excludes'':excludes,''packages'':packages,''include_files'':includefiles}}, executables = [Executable(''janitor.py'')] )

Nota:

  • include_files debe contener "solo" rutas relativas al script setup.py contrario la compilación fallará.
  • include_files puede ser una lista de cadenas, es decir, un grupo de archivos con sus rutas relativas
    o
  • include_files puede ser una lista de tuplas en la que la primera mitad de la tupla es el nombre de archivo con la ruta absoluta y la segunda mitad es el nombre de archivo de destino con la ruta absoluta.

(Cuando surge la falta de documentación, consulte a Kermit the Frog)


Para encontrar sus archivos adjuntos ( include_files = [-> your attached files <-] ) debe insertar la siguiente función en su código 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)

Ver cx-freeze: uso de archivos de datos


También puede crear un script separado que copiará los archivos después de la compilación. Es lo que utilizo para reconstruir la aplicación en Windows (debe tener instaladas las "utilidades de GNU para win32" para hacer que funcione "cp").

build.bat:

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