Windows 10下pip默认调用Python 3.8.3而非3.9.6导致pandas-datareader安装失败的问题排查与解决
解决Windows 10下
pip install pandas-datareader安装失败的问题 问题分析
从你的操作过程和报错信息来看,核心问题出在系统优先调用了存在文件损坏的Python 3.8版本——虽然你安装了Python 3.9.6,但PATH环境变量中Python 3.8的优先级更高,导致执行pip时还是会触发3.8版本的runpy.py,而WindowsApps文件夹下的该文件存在空字节错误,且权限限制无法直接修复。
你遇到的具体报错:
N:\>cd onedrive N:\OneDrive>cd python N:\OneDrive\python>pip install pandas-datareader Traceback (most recent call last): File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 185, in _run_module_as_main mod_name, mod_spec, code = _get_module_details(mod_name, _Error) File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 144, in _get_module_details return _get_module_details(pkg_main_name, error) File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\lib\runpy.py", line 155, in _get_module_details code = loader.get_code(mod_name) File "<frozen importlib._bootstrap_external>", line 981, in get_code File "<frozen importlib._bootstrap_external>", line 911, in source_to_code File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed ValueError: source code string cannot contain null bytes
解决步骤
按照以下操作即可彻底解决问题:
卸载存在问题的Python 3.8版本
- 打开Windows 10的「设置」→「应用和功能」
- 在应用列表中找到64位的Python 3.8(包含系统预装版本和你之前安装的版本),点击卸载完成移除——这个操作会同时清理WindowsApps里的相关文件。
调整PATH环境变量指向Python 3.9.6
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在用户变量的
PATH条目里,添加C:\Program Files\Python39\Scripts(这是你安装的Python 3.9.6的Scripts目录,pip命令就在这里),并将其移动到PATH列表的最上方,确保优先级最高。 - 保存设置后,关闭所有打开的终端窗口,重新打开一个新终端使环境变量生效。
验证修复效果
- 在新终端中执行
pip --version,确认输出显示的是Python 3.9.6版本 - 再次执行
pip install pandas-datareader,此时命令就能正常运行并完成安装了。
- 在新终端中执行
内容的提问来源于stack exchange,提问作者Neil Taylor




