Python3已安装urllib3但无法导入的问题求助
这种情况我之前踩过坑,大概率是Python环境路径冲突或者pip3安装的包没有落到Python3实际读取的site-packages目录里。给你几个一步步排查和解决的方法:
确认Python3的包查找路径与pip安装路径是否匹配
- 先运行这条命令,查看Python3当前会去哪些目录找模块:
python3 -c "import sys; print('\n'.join(sys.path))" - 再查看urllib3实际被pip3安装到了哪里:
对比输出里的pip3 show urllib3Location字段和第一步的sys.path列表,如果这个路径不在sys.path里,那就是Python3找不到包的核心原因。
- 先运行这条命令,查看Python3当前会去哪些目录找模块:
强制用Python3自带的pip安装包
有时候pip3可能因为环境变量问题关联到了其他Python版本,直接用Python3的-m参数调用pip,能确保包安装到当前Python3对应的目录:python3 -m pip install --upgrade urllib3 requests安装完成后再尝试导入模块,应该就能正常识别了。
检查PATH环境变量的优先级
运行echo $PATH,看看/Library/Frameworks/Python.framework/Versions/3.6/bin/是不是在系统自带的Python路径(比如/usr/bin)之前。如果不是,系统可能优先调用了其他版本的Python。
可以修改你的shell配置文件(比如~/.bash_profile或~/.zshrc,取决于你用的是bash还是zsh),添加:export PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:$PATH"然后运行
source ~/.bash_profile(或对应的配置文件)让修改生效。排查虚拟环境干扰
如果你之前用过虚拟环境,可能不小心处于激活状态,导致当前Python3不是你预期的版本。先运行:deactivate退出虚拟环境后,再重新尝试导入模块。
彻底清理残留后重装Python3
之前用homebrew重装可能没清干净旧的残留文件,试试彻底清除后重新安装:- 卸载homebrew的Python3:
brew uninstall python3 - 删除残留的框架文件和用户目录下的相关文件:
sudo rm -rf /Library/Frameworks/Python.framework/Versions/3.6 rm -rf ~/.local/lib/python3.6 - 重新安装Python3:
brew install python3
安装完成后立刻用
python3 -m pip install urllib3 requests安装需要的包。- 卸载homebrew的Python3:
内容的提问来源于stack exchange,提问作者Cdhippen

