8

PyQt4 アプリを Windows 上の「スタンドアロン」アプリケーションとしてパッケージ化することができました。動作します。

ただし、このアプリケーションはそれ自体をアップグレードできます。これは、私が書いた実際のコード (.py ファイル) を、インターネット経由でダウンロードした新しいバージョンに置き換えることによって行われます。

どうすれば PyInstaller にその仕事をさせることができますか (DLL をまとめたり、光沢のあるアイコンでランチャーを生成したりなど)、.py ファイルはそのままにしておきますか?

自動更新を機能させるには、これらのファイルを直接ディスクに置く必要があります。

4

4 に答える 4

5

仕様ファイルを変更して、名前でファイルを具体的に含めないようにすることができます (リストを作成するとき)。次に、これらのファイルが含まれていることを確認します。含めるがコンパイルしないオプションがあるかどうかを確認する必要があります。


私はこれを自分で試したことはありません(仕事でpyInstallerを使用していますが、自宅のPCには設定していません)が、これは問題ないと思う種類のものです:

a = Analysis(['main.py'])
excluded = ['myfile0.py', 'myfile1.py', 'myfile2.py']
a.scripts = [script from script in a.scripts if script not in excluded]
pyz = PYZ(a.pure)
exe = EXE(a.scripts, pyz, name="main.exe", exclude_binaries=1)
dist = COLLECT(exe, a.binaries, excluded, name="dist")
于 2011-03-20T02:32:55.240 に答える
1

実際には、次のようになります。

a = Analysis(['main.py'])
excluded = ['pathto\\myfile0.py', 'pathto\\myfile1.py', 'pathto\\myfile2.py']
a.scripts = [script from script in a.scripts if script[1] not in excluded]
pyz = PYZ(a.pure)
excluded_files_collect = [(f.split('\\')[-1],f,'DATA') for f in excluded]
exe = EXE(a.scripts, pyz, name="main.exe", exclude_binaries=1)
dist = COLLECT(exe, a.binaries, excluded_files_collect , name="dist")

script は実際には次の形式のタプルです。

('myfile0.py', 'pathto\\myfile0.py', 'PYSOURCE')

ファイルが PYZ に含まれないようにする必要がある場合もあります。pyz toc を参照して、ファイルが含まれるかどうかを確認してください。Analysis() で excludes=[myfile0] を使用して除外することができました。

于 2013-05-17T08:13:22.783 に答える
0

実行可能ファイルに埋め込まれたインタープリターは、同じディレクトリおよび/または PYTHONPATH 内の .py ファイルを引き続き検索すると思います。py2exe は、ネイティブの python コンポーネントに zip ファイルを使用します。 py2exe のように zip を保持して (または仕様に追加しないで)、ファイルなしでアプリケーションを実行して、procmon でファイル アクセスを監視します。

于 2011-05-22T02:32:57.240 に答える
0

pyinstaller はユース ケースに合わせて--excludeオプションを提供します。また、ファイル内のexcludesパラメータを使用して、無視するモジュールまたはパッケージを設定することもできます。Analysis().spec

于 2018-08-20T08:59:24.213 に答える