Python

在 wine 下執行攜帶式 python3

  • January 30, 2017

在 wine 下安裝 python 通常意味著執行圖形安裝程序,但我沒有那個選項,所以我從Python 3.6.0下載Windows x86-64 嵌入式 zip 文件並解壓縮它。

但是,當我執行時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

可以做些什麼呢?Wine 版本是 1.8。

很少有使用者需要在 Wine 下執行 Python,因為 Python 在 Wine 工作的所有系統上都可以很好地本地執行。但是,這樣做是有原因的,而且您似乎有一個理由(使用 PyInstaller 建構 Windows 安裝程序)。

某些版本的 Python 當然可以在某些版本的 Wine 上執行。不幸的是,您遇到了一個不起作用的組合。


發生了什麼

看起來您遇到了錯誤 #39437: “Visual Studio 2015-compiled C++ programs do not run”

您正在執行的程序使用_initialize_onexit_table從名為api-ms-win-crt-runtime-l1-1-0.dll.

Wine 提供了自己的版本,api-ms-win-crt-runtime-l1-1-0.dll_initialize_onexit_table直到最近(2016 年年中)才支持該功能。Wine 2.0 是第一個支持此功能的穩定版本,儘管開發版本從1.9.9開始支持它。

~~Wine 2.0 可能會在接下來的幾週內發布,但候選版本已經可用。~~Wine 2.0在這個問題發布幾週後發布。

無法升級Wine?

在 Windows 電腦上,您將使用該庫的 Microsoft 版本。如果您有 Microsoft 版本的副本,您可以配置 Wine 以使用它而不是其內置版本。

您可以使用 Wine 的override系統來實現這一點(使用 winecfg 或設置WINEDLLPATHWINEDLLOVERRIDES環境變數)。

有一個名為Winetricks的項目,它可以下載 Microsoft 的庫並配置您的 Wine 以使用它們。

綜上所述

升級你的 Wine 版本,或者降級你的 Python 版本。

如果您無法升級,有一些方法可以解決,但升級可能是您的最佳選擇。

引用自:https://unix.stackexchange.com/questions/336759