pyinstaller but Keeping .pyファイルアップグレード可能
-
27-10-2019 - |
質問
Windowsの「スタンドアロン」アプリケーションとしてPyqt4アプリをパッケージ化することができました。
ただし、このアプリケーションはそれ自体をアップグレードできます。これは、私(.pyファイル)が作成した実際のコードをインターネット経由でダウンロードした新しいバージョンに置き換えることによって行われます。
Pyinstallerがその仕事をしていることをどのように伝えることができますか(DLLをまとめ、光沢のあるアイコンでランチャーを生成するなど)が、.pyファイルを触れられないようにしますか?
自動アップデートが機能するためには、ディスク上にこれらのファイルが直接必要です。
解決
Specファイルを変更して、名前でファイルを含めないように変更することができます(ビルディングリストの場合)、これらのファイルが含まれていることを確認します。コンパイルしないオプションがあるかどうかを確認する必要があります。
私はこれを自分で試していません(私は職場で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")
他のヒント
実際、それはこのようなものです:
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")
スクリプトは実際にはフォームのタプルです。
('myfile0.py', 'pathto\\myfile0.py', 'PYSOURCE')
また、ファイルがPYZに含まれないようにし、PYZ TOCを参照してそれらが含まれるかどうかを確認する必要がある場合があります。分析()で除外= [myFile0]を使用してそれらを排除することができました。
実行可能ファイルに埋め込まれたインタープリターは、同じディレクトリおよび/またはPythonPathの.pyファイルを検索すると思います。Py2exeは、ネイティブPythonコンポーネントのzipファイルを使用します。 py2exeのようなzipを保持します(または仕様に追加しないでください)、その後、ファイルなしでアプリケーションを実行して、procmonでファイルアクセスを監視してください。
pyinstallerはを提供します -exclude ユースケースのオプションであり、使用して無視するモジュールまたはパッケージを設定することもできます excludes
のパラメーター Analysis()
の中に .spec
ファイル 。