在 wine 下執行攜帶式 python3
在 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 或設置WINEDLLPATH
和WINEDLLOVERRIDES
環境變數)。有一個名為Winetricks的項目,它可以下載 Microsoft 的庫並配置您的 Wine 以使用它們。
綜上所述
升級你的 Wine 版本,或者降級你的 Python 版本。
如果您無法升級,有一些方法可以解決,但升級可能是您的最佳選擇。