您的问题有几个方面:调用不同的主要 Python 版本、删除不需要的 Homebrew 安装包以及确定正在使用的安装。
主要的 Python 版本 2 和 3 使用不同的命令名称来调用它们。第一个,python,根据您配置的PATH 环境变量使用系统默认值,应该默认为 Python 2,但并非在所有系统上。参考:https://www.python.org/dev/peps/pep-0394/
相反,显式调用您想要的版本,例如通过运行python3。请注意,虚拟环境(通过运行 python3 -m venv <name> 或 virtualenv 创建)将使用您选择的 Python 版本创建一个隔离的环境,其中python 将始终使用该版本,pip 将安装相对于系统范围的软件包,而不是系统范围,这可能会避免对超级用户 (sudo) 权限的要求。
请注意,Homebrew 可能不会覆盖系统提供的默认版本,需要您更改 PATH 以强制使用 Homebrew 的版本。安装包后 Homebrew 会通知你这类信息,稍后你可以通过运行来获取消息:brew info <package>
卸载 brew 安装的包需要运行:brew uninstall <package>
欲了解更多信息,请运行:brew help
如上所述,识别您正在使用的 Python 以 PATH 开头。要快速识别您在 shell 中键入 python、python2 或 python3 时调用的可执行文件,请运行:which python — 这有助于识别您使用的是 Homebrew 安装版本还是系统版本,或者,如果您正在使用来自活动虚拟环境的版本。您还可以使用which 来识别pip 或pip3 命令位置。
这将为您提供等式的第一部分。第二个归结为:Python 认为事物在哪里?调用它然后运行以下命令将告诉您它认为事物(导入)的确切位置:
import sys, print
pprint(sys.path)
这可以帮助追踪与您无法导入刚刚使用pip 安装的软件包相关的问题。
我可以强烈推荐使用virtual environment 将您的项目与系统级包和差异隔离开来。在其中一个中,python 和 pip 将基本上始终按预期运行,正如您在创建环境时确定的那样。