スペックファイルを正常に編集し、データを含むフォルダーを追加しました。正常にビルドされますが、それでもデータにアクセスできません。コンパイルされた.exeを実行しようとすると、次のエラーが発生します:Error loading Python DLL: C:\Users\Sal\AppData\Local\Temp\_MEI60122\python27.dll (error code 126)
編集1-私はまだこれを理解していません私のスペックファイルは次のようになります:
a = Analysis(['Clock_In.py'],
pathex=['C:\\Users\\Sal\\Desktop'],
hiddenimports=[],
hookspath=None,
runtime_hooks=None)
a.datas += [('CO_time.pkl','CO_time.pkl', 'DATA')]
a.datas += [('hours.pkl','hours.pkl', 'DATA')]
a.datas += [('Obj_file.pkl','Obj_file.pkl', 'DATA')]
a.datas += [('weekly_hours_dict.pkl','weekly_hours_dict.pkl', 'DATA')]
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.datas,
a.binaries,
a.scripts,
exclude_binaries=True,
name='Clock_In.exe',
debug=False,
strip=None,
upx=True,
console=True,
icon="C:\Users\Sal\Desktop\Raindropmemory-Legendora-BrokenSword.ico")
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=None,
upx=True,
**name='Clock_In')
編集2
私は64ビットOS(Windows 8)で32ビットpythonを使用していますが、これが問題を引き起こす可能性があることに気づきましたが、それでも解決策はありません。
編集
だから私は64ビットpythonをダウンロードしてシステムパスに入れてみました。specファイルでpyinstallerを実行しても、まったく同じエラーコードが表示されます!ここで何が起こっているのですか!A興味深い詳細は、icon="C:\Users\Sal\Desktop\Raindropmemory-Legendora-BrokenSword.ico")
スペックファイルのステートメントが実行され、アイコンが正常に更新されましたが、以前とは異なります。
編集4
これは、ドキュメントから直接MEIPASSのコードにあるステートメントです。
if getattr(sys, 'frozen', False):
# we are running in a |PyInstaller| bundle
basedir = sys._MEIPASS
else:
# we are running in a normal Python environment
basedir = os.path.dirname(__file__)
そのコードスニペットを、実行可能ファイルに変換するPythonスクリプトの先頭に配置します。仕様にも、独自のスクリプトにも含まれていません。ここに例を見つけました。
https://shanetully.com/2013/08/cross-platform-deployment-of-python-applications-with-pyinstaller/
次のようなスタンドアロンの実行可能ファイルを作成した後、同じエラーが見つかりました。
pyi-makespec.exe -F program.py
## Customize script.spec just created
そして
pyinstaller.exe -F script.spec
そのため、実行可能ファイルを管理者として実行して解決する必要がありました。
私のコンピューターではなかったので、理由はわかりません。私は最初に自分のプロセスを実行し、魅力のように機能しましたが、そこでは機能しませんでした。おそらくいくつかのセキュリティ構成または python または wxpython の奇妙なインストールですが、成功しない時間を探していたので、ここにこのソリューションを追加します。これは簡単な作業で節約できます。より複雑なアプローチを試す前に、しばらく時間がかかります。
簡単な方法の1つは、C:\ Users\xxx\AppData\Roaming\pyinstallerというフォルダー内のすべてのものを削除することです。このフォルダをクリーンアップした後、問題を修正しました。前回Pyinstallerで作成したファイルもすべて削除するかもしれません。
Windows10のpython3.7でも同じ問題が発生します。
--upx-exclude"vcruntime140.dll"
オプションを追加してこれを修正しました。
詳細情報を見つけることができます ここ
私は同じ問題に遭遇しました、そして最終的に理由がアンチウイルスソフトウェアが「python27.dll」をトロイの木馬として扱い、exeがロードしようとしたときにそれを削除したことを発見しました。
この問題は、信頼できるゾーンに「...\AppData\Local\Temp \」を追加することで解決されます。