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

Posted 南瓜__pumpkin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Mac环境指定pip3安装文件的存储位置的主要内容,如果未能解决你的问题,请参考以下文章

mac上安装virtualenvwrapper的正确姿势

mac---pip3安装

[求助]python3.11+mac12.6 pip3安装pygame一直报错

pip3安装和卸载以及常用命令

Mac 虚拟环境搭建使用

Mac上python 在终端使用pip3安装包报ConnectTimeoutError错误