[解決済み] PyInstallerでデータファイルをバンドルする(--onefile)
2022-05-09 04:17:34
質問
PyInstallerを使って、画像とアイコンを含む1ファイルのEXEをビルドしようとしています。私はどうしても、それが
--onefile
.
もし私が
--onedir
は、すべて非常にうまく動作します。
私が
--onefile
コンパイルしたEXEを実行すると)参照された追加ファイルが見つかりません。DLLや他のものはすべてうまく見つかりますが、2つの画像だけは見つかりません。
EXEを実行したときに生成されるtemp-dirを調べました(
\Temp\_MEI95642\
例えば、)そのファイルは確かにそこにあります。EXEをそのテンポラリディレクトリにドロップすると、ファイルが見つかります。非常に困惑しています。
これを
.spec
ファイル
a.datas += [('images/icon.ico', 'D:\\[workspace]\\App\\src\\images\\icon.ico', 'DATA'),
('images/loaderani.gif','D:\\[workspace]\\App\\src\\images\\loaderani.gif','DATA')]
サブフォルダーに入れないというのも試しましたが、違いはありませんでした。
編集する PyInstallerのアップデートにより、新しい回答を正しいものとしてマークしました。
解決方法は?
新しいバージョンの PyInstaller は
env
という変数があるため、Shishの優れた
回答
は動作しません。これで、パスは
sys._MEIPASS
:
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
try:
# PyInstaller creates a temp folder and stores path in _MEIPASS
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
関連
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
任意波形を生成してtxtで保存するためのPython実装
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
Pythonの@decoratorsについてまとめてみました。
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】 NameError: グローバル名 'xrange' は Python 3 で定義されていません。
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み] __init__.py は何のためにあるのですか?