[PyPI]: pywin32 226已于20191110发布。它作品 大多数 Python 安装(例如,适用于从 Python 下载的官方版本),但 不是 关于虚拟环境(例如 使用 VirtualEnv (v16.7.7 ) 创建,以及(基于进一步研究)Python 的 venv )。我用 Python v3.8 .0 和 v3.7 .3 作为实验室老鼠。这是前者的输出:
[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q058805040]> "e:\Work\Dev\VEnvs\py_064_03.08.00_test0\Scripts\python.exe" -c "import win32api" Fatal Python error: init_import_size: Failed to import the site module Python runtime state: initialized Traceback (most recent call last): File "e:\Work\Dev\VEnvs\py_064_03.08.00_test0\lib\site.py", line 769, in <module> main() File "e:\Work\Dev\VEnvs\py_064_03.08.00_test0\lib\site.py", line 746, in main paths_in_sys = addsitepackages(paths_in_sys) File "e:\Work\Dev\VEnvs\py_064_03.08.00_test0\lib\site.py", line 279, in addsitepackages addsitedir(sitedir, known_paths) File "e:\Work\Dev\VEnvs\py_064_03.08.00_test0\lib\site.py", line 202, in addsitedir addpackage(sitedir, name, known_paths) File "e:\Work\Dev\VEnvs\py_064_03.08.00_test0\lib\site.py", line 170, in addpackage exec(line) File "<string>", line 1, in <module> File "e:\Work\Dev\VEnvs\py_064_03.08.00_test0\lib\site-packages\win32\lib\pywin32_bootstrap.py", line 14, in <module> for maybe in site.getsitepackages(): AttributeError: partially initialized module 'site' has no attribute 'getsitepackages' (most likely due to a circular import)
最佳答案
备注 :我从 [SO]: PyWin32 and Python 3.8.0 (@CristiFati's answer) 分支了这个答案(以及问题) ,因为这是一个不同的问题。在继续之前,您可能需要检查一下。
经过一番挖掘,原来是 VirtualEnv 错误 (或者至少,这就是我的看法,因为 VirtualEnv 的 site.py 不包含 getsitepackages - 尽管它自 v2.7 起就存在于 Python 的 site.py 中)。有几个问题(是)围绕这种缺席开放(例如 [GitHub]: pypa/virtualenv - site.getsitepackages() missing ),但它们似乎在没有修复的情况下关闭(其中许多是由于不活动)。另外,[GitHub]: [WIP] The next-gen virtualenv (rewrite)这是一个很大的重构,似乎没有解决它。
回顾 :此错误(在 VirtualEnv 上下文中):
总之,不要在(VirtualEnv)虚拟环境中安装 PyWin32 226,因为它们最终会处于损坏状态!
PyWin32(官方 .whls)“兼容性表”(未检查 Anaconda(或其他此类工具)):
已提交 [GitHub]: mhammond/pywin32 - Workaround for virtual environments (VirtualEnv) ( 于 20191114 合并)。在本地应用更改(查看引用的问题以获取有关如何操作的详细信息),修复它:
[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q058805040]> sopr.bat *** Set shorter prompt to better fit when pasted in StackOverflow (or other) pages *** [prompt]> ".\venv_py_064_030800\Scripts\python.exe" -m pip list Package Version ---------- ------- pip 19.3.1 pywin32 226 setuptools 41.6.0 wheel 0.33.6 [prompt]> ".\venv_py_064_030800\Scripts\python.exe" -c "import win32api" [prompt]>
更新#0
[PyPI]: pywin32 227 (解决了这个问题),发表于20191114!
关于python - PyWin32 (226) 和虚拟环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58805040/