mac系统python2,python3同时存在,PIP2运行报错问题及解决
背景及问题描述:
-
mac自带python2.7.x(位置:/usr/bin/python), mac自带的python2.7.X版本,不带pip。
-
自己安装了python3(位置:/usr/local/bin/python3),python3自带pip3。
-
想安装pip,以便使用python2=》使用sudo easy_install pip安装了pip,提示安装成功
-
调用pip -V,报错
下面的代码段是pip命令执行的详细报错内容。
#pip -V后的报错内容
Traceback (most recent call last):
File "/usr/local/bin/pip", line 11, in <module>
load_entry_point('pip==21.1.2', 'console_scripts', 'pip')()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 489, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 2843, in load_entry_point
return ep.load()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 2434, in load
return self.resolve()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 2440, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/Library/Python/2.7/site-packages/pip-21.1.2-py2.7.egg/pip/__init__.py", line 1, in <module>
from typing import List, Optional
ImportError: No module named typing
分析原因:python2在usr/bin,但pip安装在了usr/local/bin,两者无法相互联通使用。
解决方案思路:使得pip2和python2就在同一位置——不使用系统 自带的python2,而是自己安装一个python2。原则是,尽量不修改系统自带的python环境。
解决步骤
接下来进行安装。
错误命令:brew install python==》无法安装python2,会提示python已经是pthon3.x版本
正确命令:brew install python2
下图为执行过程:
出现报错及告警,按提示执行命令行:xcode-select --install
再次执行命令行:brew install python2
出现报错:
具体的报错信息为:
Error: Permission denied @ apply2files - /usr/local/lib/node_modules/conventional-changelog/node_modules/.DS_Store
报错信息分析:权限问题。
解决方案:为当前用户名修改权限。参考链接:StackOverFlow:virtualenv ERROR: the executable in env/bin/python is not functioning
具体代码参考链接中有两种解答:方案1改动当前用户名对node_modules的running权限,方案2改动对当前用户名对usr/local的权限。
#方案1:Change permission of the node_modules directory by running:
sudo chown -R ${LOGNAME}:staff /usr/local/lib/node_modules
#方案2:
#If you are getting the above error during brew cleanup
# “Permission denied @ apply2files”,
#one of the solution which worked in my case was
#to reset permissions to /user/local.
#You will have to rewrite permission to the current user.
#In your terminal copy and paste :
sudo chown -R $(whoami):admin /usr/local/* \
&& sudo chmod -R g+rwx /usr/local/*
为了最小化权限改动,使用了方案1,只改动对node_modules的权限。
执行结束后,再次执行 brew install python2.提示已安装成功。
执行pip -V以及pip2 -V,正常显示版本号。
至此成功解决pip-V执行失败问题。