簡體   English   中英

同時安裝和運行 32 位和 64 位 python - 模塊問題

[英]Installing and running both 32 bit and 64 bit python at the same time -module issues

我有一個模塊只能在 32 位 python 上運行。然后我有一些子進程需要在 64 位 python 上啟動,原因是 memory。 我還需要使用大約 8 個模塊。 我安裝了所有東西,實際上同時運行了 32 位和 64 位版本。 但隨后不得不再安裝一個模塊“datetime”。 安裝后又回到了這個問題。 我嘗試卸載“datetime”但沒有解決。

OSError: [WinError 193] %1 不是有效的 Win32 應用程序

所以我聽從了建議,通過使用 pip install -- pywin32==227 來做最初似乎允許兩者運行的事情

那說它已經很滿意所以我嘗試了 pip install -- pywin32==228 然后回到 pip install -- pywin32==227

還是這個錯誤 OSError: [WinError 193] %1 is not a valid Win32 application

我注意到盡管在兩個不同的文件夾中有兩個版本的 python(32 位和 64 位),但它將所有模塊存儲在 \AppData\Roaming\Python\Python39\site-packages 中,我想知道它如何區分 32 位模塊安裝和 64 位。

關於這個問題最令人沮喪的事情是有那么一小會兒,我實際上都在運行所以我知道這是可能的,但不確定在這一點上如何。 是否有推薦的方法可以同時運行兩個(32 位和 64 位)python 並安裝兩組獨特的模塊? 此時,我將根據需要重新開始所有安裝。

問題是 python 對 python 的 32 位和 64 位版本使用相同的 site.getusersitepackages() 位置。

您的模塊安裝過程似乎正在使用 usersitepackages,因為您指定導致問題的目錄是 \AppData\Roaming\Python\Python39\site-packages,它是 usersitepackages,它比 sys.path 中的常規站點包更早出現(但前提是該目錄存在——因此並不是每個人都知道 usersitepackages)。

這似乎是 Python 版本的一個錯誤 - 它也讓我很惱火,因為我更喜歡在 usersitepackages 中安裝我的擴展,因為我可能沒有對常規站點包目錄的寫入權限。

您可以按如下方式修復它:

在您的 Python package 中編輯文件 Lib/site.py(當然您可能沒有寫入權限 - 見上文)。

在這個文件中有一個名為 _get_path 的 function 看起來有點像這樣:

def _get_path(userbase):
    version = sys.version_info
    if os.name == 'nt':
        return f'{userbase}\\Python{version[0]}{version[1]}\\site-packages'

非常好 - 它獲得了 Python 的正確版本 - 但對位數沒有任何影響。 因為我們正在重新編碼這個 function 你應該這樣做:

return f'{userbase}\\Python{version[0]}{version[1]}-32\\site-packages'

或這個:

return f'{userbase}\\Python{version[0]}{version[1]}-64\\site-packages'

取決於您編輯的是 32 位版本還是 64 位版本。

我想如果您想要純粹和合乎邏輯(以便所有版本都具有相同的 site.py 實現),您可以找到架構。

例如

import platform
platform.architecture()[0]

應該返回 32 位或 64 位 - 所以我認為 Python 開發團隊在閱讀此評論時應該這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM