Mac环境指定pip3安装文件的存储位置


遇到的问题

  遇到问题:为昆仑镜配置Python3环境,初始化数据库时报错。使用pip3.8安装django,发现pip3.8的安装目录是Python2的包目录。

运行命令,python3 kunlun.py init initialize
报错信息:ModuleNotFoundError: No module named 'django'

为python3安装django:pip3 install django
报错信息:Requirement already satisfied: django in /Users/didi/Library/Python/2.7/lib/python/site-packages (1.11.29)

  问题所在:正常情况下,pip3安装的文件应该位于/Users/didi/Library/Python/3.8/lib/python/site-packages/目录下,但pip3安装文件时却检查Python2.7的包目录。

  解决思路:修改pip3.8配置信息,使其文件存储位置更正为python3的包目录。


排查和尝试

  Linux的which命令用于查找文件,会在环境变量$PATH设置的目录里查找符合条件的文件。通过which命令初步定位python和pip的命令解释器位置。

which python	命令结果/usr/bin/python
which python3	命令结果/usr/bin/python3.8
which pip		命令结果/usr/local/bin/pip
which pip3.8	命令结果/usr/local/bin/pip3.8

  查看pip3.8的文件信息:vim /usr/local/bin/pip3.8,前两行内容如下,其中第一行内容与pip2.7相同。如果印象比较深刻的话,你会记得#!的作用是指定运行程序的解释器,换句话说此处pip3.8的命令是由python2.7来解释执行的。

#!/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
# EASY-INSTALL-ENTRY-SCRIPT: 'pip==20.3.4','console_scripts','pip3.8'

  尝试1-不可行:修改pip3.8的解释器为python3.8,具体修改方式是把第一行改成/usr/bin/python3。测试运行命令:pip3.8 install django,发生报错。
  报错信息:报错出在pip3.8的第5行代码,from pkg_resources import load_entry_point。
  报错分析:我们修改后的/usr/bin/python3目录下,没有pkg_resources。

  尝试2-不可行:在报错信息中,提示了一个跟原路径相似的文件,猜测会包含pkg_resources模块。所以修改第一行代码为:/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8。
  测试效果如下。关闭终端shell,管理员运行命令pip3.8 -V,提示/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versi: bad interpreter: Permission denied。
在这里插入图片描述

临时解决方案

  尝试3-可行:把django从python2.7的包目录复制到python3.8的包目录。

查看默认安装路径:python3 -m site --user-site
结果:/Users/didi/Library/Python/3.8/lib/python/site-packages	

查看默认安装路径:python -m site --user-site
结果:/Users/didi/Library/Python/2.7/lib/python/site-packages

复制django库
cp -rf /Users/didi/Library/Python/2.7/lib/python/site-packages/django /Users/didi/Library/Python/3.8/lib/python/site-packages

  多次执行命令:python3 kunlun.py init initialize,提示Python3没有下载该模块。运行命令:pip install somemodule,提示已存在于/xxx。复制:cp -rf /xxx /Users/didi/Library/Python/3.8/lib/python/site-packages。

  考虑之后觉得有些麻烦,直接把python2里的模块打包给python3的包目录。命令:cp -rf /Users/didi/Library/Python/2.7/lib/python/site-packages/* /Users/didi/Library/Python/3.8/lib/python/site-packages/。

  遇到新问题:You are trying to run the Python 2 version of Beautiful Soup under Python 3. This will not work。

正解

  通过命令可以查看软件目录:python3 -m site --user-site。直接把之前的pip3.8删除,然后使用python3目录下的pip3.8替代即可。

rm /usr/local/bin/pip3.8
cp /Users/didi/Library/Python/3.8/bin/pip3.8 /usr/local/bin/
pip3 -V

在这里插入图片描述

  终于把昆仑镜初始化。
在这里插入图片描述


参考

  《更改Python的pip install 默认安装依赖路径方法详解》
https://www.huaweicloud.com/articles/fe697f0995b6cfcd1432f58605cb8e71.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值