Python3 venv 模块 No module named 'encodings' 其中一种解决办法

本文经验仅供参考。

报错信息

1
2
Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

问题描述

Win10 系统中使用 Python 3.x 自带的 venv 模块所生成的虚拟环境时出现的错误。

解决办法/TL;DR

恢复安装 venv_path\pyvenv.cfg(虚拟环境配置文件)所指定的特定路径和版本的 python 解释器。
(或者使用 python -m venv --upgrade "venv_path" 更新配置文件以指定虚拟环境使用系统中当前的 python 解释器?)

姑且的总结

  • 标准库自带的轻量级虚拟环境模块 python -m venv
    所生成的虚拟环境的使用前提:重要路径保持不变。
    (因为写死了解释器、虚拟环境目录的绝对路径)
    也就是:
    • 虚拟环境仍然位于初始化时的路径。(不可移动虚拟环境目录的路径)
    • 初始化时所使用的 python 路径仍然未变。(不可移除初始化虚拟环境时所使用的 python 及其目录)

错误猜想

  • PATH 环境变量中的 python 版本错误?
    不完全是,而且即便版本一致也依然会报错(可能是因为与配置文件中记录的解释器路径不一致)。

相关参考

https://docs.python.org/zh-cn/3.6/library/venv.html
https://learnku.com/docs/pymotw/venv-create-virtual-environments/3476

https://bugs.python.org/issue22213
https://bugs.python.org/issue35706
https://www.v2ex.com/t/578069
https://stackoverflow.com/questions/5694706/py-initialize-fails-unable-to-load-the-file-system-codec

0%