繁体   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