Frage

Ich verwende Python 2.6 und cx_Freeze 4.1.2 auf einem Windows-System. Ich habe die setup.py erstellt meine ausführbare Datei und alles funktioniert zu bauen.

Wenn cx_Freeze läuft, bewegt er sich alles rund um das build Verzeichnis. Ich habe einige andere Dateien, dass ich in meinem build Verzeichnis enthalten mag. Wie kann ich das machen? Hier ist meine Struktur:

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

Hier ist mein Snippet:

  

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

Ich kann nicht scheinen dies zur Arbeit zu kommen. Brauche ich eine MANIFEST.in Datei?

War es hilfreich?

Lösung

es herausgefunden.

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

Hinweis:

  • include_files enthalten muss "nur" relative Pfade zum setup.py Skript sonst das Build fehl.
  • include_files kann das heißt eine Reihe von Dateien mit ihren relativen Pfaden eine Liste der Zeichenfolge sein
    oder
  • include_files kann eine Liste von Tupeln, in dem die erste Hälfte des Tupels ist der Dateiname mit dem absoluten Pfad und der zweiten Hälfte wird der Zieldateiname mit dem absoluten Pfad.

(Wenn das Fehlen der Dokumentation entsteht, konsultieren Kermit der Frosch)

Andere Tipps

Es ist ein komplexeres Beispiel an: cx_freeze - wxPyWiki

Die fehlende Dokumentation aller Optionen ist unter: cx_Freeze (Internet Archive)

Mit cx_Freeze, habe ich noch eine Build-Ausgabe von 11 Dateien in einem einzigen Ordner erhalten, obwohl im Gegensatz zu Py2Exe.

Alternativen: Verpackung | Die Maus Vs. Python

Um Ihre angehängten Dateien zu finden (include_files = [-> your attached files <-]) sollten Sie die folgende Funktion in Ihrem setup.py Code einfügen:

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)

Siehe cx-freeze: Datendateien mit

Sie können auch getrennte Skript erstellen, die Dateien nach dem Build kopiert. Es ist, was ich die App auf Fenster für den Wiederaufbau verwenden (Sie sollten „GNU-Utilities für win32“ installiert haben, um „cp“ Werke zu machen).

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top