58

Windows システムで Python 2.6 と cx_Freeze 4.1.2 を使用しています。実行可能ファイルをビルドするために setup.py を作成しましたが、すべて正常に動作します。

cx_Freeze が実行されると、すべてがbuildディレクトリに移動されます。buildディレクトリに含めたいファイルが他にもいくつかあります。これどうやってするの?これが私の構造です:

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

私はこれを機能させることができないようです。ファイルは必要MANIFEST.inですか?

4

4 に答える 4

112

理解した。

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タプルの前半が絶対パス付きのファイル名で、後半が絶対パス付きの宛先ファイル名であるタプルのリストにすることができます。

(書類の不足が生じた場合は、カエルのカーミットに相談してください)

于 2010-05-23T17:31:24.417 に答える
6

より複雑な例があります: cx_freeze - wxPyWiki

すべてのオプションの不足しているドキュメントは、cx_Freeze (インターネット アーカイブ)にあります。

を使用cx_Freezeしても、1 つのフォルダーに 11 個のファイルのビルド出力が得られますが、Py2Exe.

代替案:包装 | マウス対。パイソン

于 2011-10-19T09:18:00.773 に答える
2

添付ファイル ( 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: データファイルの使用を参照してください

于 2016-08-12T11:23:56.430 に答える
2

また、ビルド後にファイルをコピーする別のスクリプトを作成することもできます。これは、Windows でアプリを再構築するために使用するものです (「cp」を機能させるには、「win32 用の GNU ユーティリティ」をインストールする必要があります)。

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
于 2014-06-08T08:56:53.330 に答える