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安装文件的存储位置的主要内容,如果未能解决你的问题,请参考以下文章