mac系统python2,python3同时存在,PIP2运行报错问题及解决

mac系统python2,python3同时存在,PIP2运行报错问题及解决

背景及问题描述:

  1. mac自带python2.7.x(位置:/usr/bin/python), mac自带的python2.7.X版本,不带pip。

  2. 自己安装了python3(位置:/usr/local/bin/python3),python3自带pip3。

  3. 想安装pip,以便使用python2=》使用sudo easy_install pip安装了pip,提示安装成功

  4. 调用pip -V,报错

pip-v报错信息
图1 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,两者无法相互联通使用。

python2,pip的位置
图2  python2,pip的位置

解决方案思路:使得pip2和python2就在同一位置——不使用系统 自带的python2,而是自己安装一个python2。原则是,尽量不修改系统自带的python环境。

解决步骤

接下来进行安装。

错误命令:brew install python==》无法安装python2,会提示python已经是pthon3.x版本

正确命令:brew install python2

下图为执行过程:

brew install python2执行过程
图3  brew install python2执行过程

出现报错及告警,按提示执行命令行:xcode-select --install

再次执行命令行:brew install python2

出现报错:

报错
图4 报错:Permission denied @ apply2file///.DS_Store

具体的报错信息为:

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 执行成功过程
图5 pip -V 执行成功过程

至此成功解决pip-V执行失败问题。

猜你喜欢

转载自blog.csdn.net/lamanchas/article/details/117773142