pipenv --three创建虚拟环境报错ValueError: 源码字符串不可含空字节
问题背景
- 线上学习计算机科学课程过程中,使用
pipenv --three创建虚拟环境时出现运行故障 - 在VSCode终端执行
pipenv --three命令后,抛出如下错误日志:
Using C:/Users/AppData/Local/Programs/Python/Python39/python.exe (3.9.7) to create virtualenv... [= ] Creating virtual environment... Failed creating virtual environment Traceback (most recent call last): File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1520.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 187, in _run_module_as_main mod_name, mod_spec, code = _get_module_details(mod_name, _Error) File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1520.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 146, in _get_module_details return _get_module_details(pkg_main_name, error) File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1520.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 110, in _get_module_details __import__(pkg_name) File "C:\Users\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\virtualenv\__init__.py", line 3, in <module> from .run import cli_run, session_via_cli ValueError: source code string cannot contain null bytes
- 已检索公开问题讨论,未找到完全匹配的解决方案。
故障根因
- 系统存在多版本Python环境冲突:本地手动安装了Python 3.9(路径为
C:/Users/AppData/Local/Programs/Python/Python39/),同时系统自带微软应用商店分发的Python 3.10(存放在WindowsApps目录下),pipenv调用虚拟环境创建组件时,错误加载了Python 3.10路径下的第三方包 - Python 3.10用户目录下安装的
virtualenv包文件损坏,源码中混入空字节(null bytes),导致Python解释器无法正常解析加载模块,是触发ValueError: source code string cannot contain null bytes报错的直接原因。
修复步骤
- 清理损坏的旧安装包
打开终端执行命令,完全卸载当前环境中残留的virtualenv:pip uninstall virtualenv -y
如果提示存在多个安装版本,重复执行该命令,直到终端提示当前环境未安装virtualenv为止。 - 修正环境变量优先级
- 按下Win键搜索「环境变量」,打开「编辑系统环境变量」面板,点击「环境变量」按钮
- 分别编辑「用户变量」和「系统变量」中的
Path条目,将手动安装的Python 3.9根目录路径、Python 3.9下的Scripts子目录路径移动到列表最顶部;将所有包含WindowsApps、指向Python 3.10的路径下移,若不需要使用微软商店版Python,可直接删除对应路径条目 - 保存环境变量配置后,关闭所有已打开的VSCode窗口和终端窗口,重新打开终端执行
python --version,确认输出版本为Python 3.9.x,即代表环境变量配置生效
- 重新安装依赖组件
依次执行如下命令,升级基础包管理组件并重新安装pipenv、virtualenv:pip install --upgrade pip setuptools wheelpip install pipenv virtualenv - 验证虚拟环境创建
进入目标项目目录,重新执行pipenv --three命令,即可正常完成虚拟环境创建。
*补充排查:如果完成上述步骤后仍出现相同报错,直接手动删除路径C:\Users\你的用户名\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\下所有名称包含virtualenv、pipenv的文件夹,再重新执行安装命令即可。
内容的提问来源于stack exchange,提问作者AMass
相关产品推荐
相关产品推荐

