Domanda

Sto usando Python 2.6 e cx_Freeze 4.1.2 su un sistema Windows. Ho creato il setup.py per costruire la mia eseguibile e tutto funziona bene.

Quando cx_Freeze corre, si muove tutto nella directory build. Ho alcuni altri file che vorrei inclusi nella mia directory build. Come posso fare questo? Ecco la mia struttura:

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

Ecco il mio frammento:

  

setup

( 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 = 
      [ ('helpers\uncompress', ['helpers\uncompress\unzip.exe']),
        ('helpers\uncompress', ['helpers\uncompress\unRAR.exe']),
        ('', ['README.txt'])
      ],
  executables =
      [
      Executable\
          (
          'janitor.py', #initScript
          )
      ]
)

Non riesco a farlo funzionare. Ho bisogno di un file di MANIFEST.in?

È stato utile?

Soluzione

capito.

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')]
)

Nota:

  • include_files deve contenere "solo" i percorsi relativi allo script setup.py altrimenti la costruzione fallirà.
  • include_files può essere una lista di stringhe cioè un gruppo di file con i loro percorsi relativi
    o
  • include_files può essere una lista di tuple in cui la prima metà del tupla è il nome del file con il percorso assoluto e la seconda metà è il nome del file di destinazione con il percorso assoluto.

(quando la mancanza della documentazione si pone, consultare Kermit la rana)

Altri suggerimenti

C'è un esempio più complesso a: cx_freeze - wxPyWiki

La documentazione mancante di tutte le opzioni e ': cx_Freeze (Internet Archive)

Con cx_Freeze, ho ancora ottenere un output di generazione di 11 file in una singola cartella, anche se, a differenza di Py2Exe.

Packaging | Il Vs. mouse Python

Al fine di trovare i file allegati (include_files = [-> your attached files <-]) è necessario inserire la seguente funzione nel codice 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)

Vedi cx-freeze: utilizzando i file di dati

Inoltre è possibile creare script separato che copierà i file dopo la compilazione. E 'quello che io uso per ricostruire l'applicazione su Windows (si dovrebbe avere "utilità GNU per Win32" installate a fare "cp" funziona).

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top