ワインでポータブルPython3を実行

ワインでポータブルPython3を実行

WineにPythonをインストールするとは、通常、グラフィカルインストーラを実行することを意味しますが、そのオプションがないのでダウンロードしました。Windows x86-64 組み込み zip ファイル~からPython 3.6.0そしてパッケージを開いてみてください。

ただし、実行するとwine python.exeエラーが発生します。

wine: Call from 0x7b83c3ae to unimplemented function api-ms-win-crt-runtime-l1-1-0.dll._initialize_onexit_table, aborting
err:module:attach_process_dlls "python35.dll" failed to initialize, aborting
err:module:LdrInitializeThunk Main exe initialization for L"Z:\\<path>\\python.exe" failed, status 80000100

これについて私たちは何ができますか?ワインのバージョンは1.8です。

答え1

Python は Wine を実行しているすべてのシステムでうまく動作するため、Wine で Python を実行する必要があるユーザーはほとんどいません。しかし、これには理由があり、あなたにも理由があるようです(PyInstallerを使用してWindowsインストーラを構築すること)。

もちろん、特定のバージョンのPythonは特定のバージョンのWineで実行されます。残念ながら動作しない組み合わせが発生しました。


どうしたの?

会ったようですねバグ #39437: "Visual Studio 2015 でコンパイルされた C++ プログラムが実行されません。"

_initialize_onexit_table実行中のプログラムは、というライブラリから呼び出された関数を使用しますapi-ms-win-crt-runtime-l1-1-0.dll

Wineは独自のバージョンを提供していますが、最近(2016年半ば)にapi-ms-win-crt-runtime-l1-1-0.dllこの機能をサポートしました。_initialize_onexit_tableWine 2.0はこの機能をサポートする最初の安定版でしたが、それ以降は開発版でもサポートされています。1.9.9

Wine 2.0は今後数週間以内にリリースされる予定ですが、リリース候補はすでに公開されています。ワイン2.0リリースこの質問が投稿されてから数週間後です。

ワインをアップグレードできませんか?

Windowsコンピュータでは、このライブラリのMicrosoftバージョンを使用しています。 Microsoft バージョンのコピーがある場合は、組み込みバージョンの代わりに使用するように Wine を構成できます。

Wineシステムを使用してoverrideこれを行うことができます(wincfgまたは設定WINEDLLPATHWINEDLLOVERRIDES環境変数を使用)。

というプロジェクトがあります。ワイン製造のヒントMicrosoftのライブラリをダウンロードし、それを使用するようにWineを設定します。

要約すると

Wineのバージョンをアップグレードするか、Pythonのバージョンをダウングレードしてください。

アップグレードできない場合は、いくつかの回避策がありますが、アップグレードが最善の選択肢かもしれません。

関連情報