目录
四、解决问题:默认pip安装第三方库出现Defaulting to user installation because normal site-packages is not writeable
一、问题描述
Ubuntu22.04使用pip安装第三方包时出现问题:
Defaulting to user installation because normal site-packages is not writeable
并且发现第三方库安装在/home/ XXX /.local/bin (XXX为自己的用户名)
查找解决方案,发现阅读量5w的帖子解决方案是在pip前添加python -m,但是本人觉得这样治标不治本,每次安装第三方库时比较麻烦,所以本文记录本人虚拟机下彻底解决这些问题的流程
目录
1. 解决问题:找不到命令"python"
3. 解决问题: 默认pip安装第三方库出现Defaulting to user installation because normal site-packages is not writeable
二、解决问题:找不到命令"python"
1. 映射python(不推荐)
注意:我虚拟机中没有使用conda,此种方案在打开conda虚拟环境后再次输入python后还是映射的系统自带的python3,所以本人在mac上提供了另外一种解决方案,即复制快捷方式
输入python -m site指令,发现找不到命令"python",但是输入python3 -m site则可以显示python3的环境路径
python -m site
python3 -m site
参考解决方案:
此时可以使用别名把python映射成python3,使用sudo gedit ~/.bashrc 或 sudo vim ~/.bashrc 编辑bashrc文件,在最后一行添加alias python='python3',
保存并退出后,再输入source ~/.bashrc 重新配置文件
#使用gedit编辑器打开bashrc文件
sudo gedit ~/.bashrc
alias python='python3'
source ~/.bashrc
成功将python映射到python3上
2. 复制python3的快捷方式
macOS系统在终端中使用快捷键 ⌘ + ⇧ + G(Command + Shift + G),输入/usr/local/bin/python
在Ubuntu的文件app中可以按压/键以根目录作为位置栏起点,输入/usr/bin/python3
发现只有python3,没有python的快接方式,所以可以直接把python3复制一份,然后重命名为python,
cp指令可以复制并重命名文件,在macOS的路径是/usr/local/bin/,在Ubuntu中是/usr/bin/
MacOS
sudo cp /usr/local/bin/python3 /usr/local/bin/python
Ubuntu
sudo cp /usr/bin/python3 /usr/bin/python
复制完成后再次输入python就可以了,也不会影响到conda
记住一定要删除之前在~/.bachrc中添加的别名映射alias
三、修改自带pip用户路径
输入python -m site,查看python环境路径,发现用户路径为/home/ ××× /.local
python -m site
python3 -m site
根据自己虚拟机默认python版本,修改site.py文件(我的是python3.10)
#我的虚拟机默认python版本为3.10时,根据自己系统自行修改
sudo gedit /usr/lib/python3.10/site.py
在gedit文本编辑器中,使用 快捷键 ctrl + F查找USER_BASE,找到找到USER_BASE和USER_SITE定义位置,在他们前面插入#将其注释掉,根据自己python版本添加路径。
# 注意自己默认的python版本,自行修改
USER_SITE = '/usr/local/lib/python3.10/dist-packages'
USER_BASE = '/usr/local'
点击标题栏上保存按钮并退出后,再次输入指令python -m site,发现用户路径已修改。但使用pip安装第三方库时仍安装在/home/ ××× /.local目录下。
python -m site
python3 -m site
四、解决问题:默认pip安装第三方库出现Defaulting to user installation because normal site-packages is not writeable
找到python报错位置,看不懂就翻译一下,有些问题就打印出来了,但是新手可能不会看
可以看出是软件包安装目录没有写入权限
(1) 查看软件包安装目录 权限(可跳过)
使用文件app查看对应目录权限(只查看,用于确定问题是否出在这里,也可以跳过这一步)
在文件中,按 / 键可以快速前往指定目录,输入 usr/local/ 进入local目录下,
文件的预设快捷键
在bin和lib文件夹上,按压鼠标右键,选择最下面的属性(或者鼠标左键选中,ctrl + i快捷键查看属性)在属性窗口中点击标题栏上的权限按钮,可以看到用户组只有访问文件权限
(文件中好像不能直接修改权限,需要使用指令行)
添加读写权限的方案在下一步,添加完成后,再次查看文件属性,访问权限应为新建和删除文件
(2) 添加软件包安装目录权限
(最下面的sudo chmod -R 777可以为文件夹内所有文件添加权限)
由于bin路径下没有文件夹,因此可用a+w附加权限,-R 777可以为文件夹内所有文件添加权限(这样就可以兼容多种版本的python了)
sudo chmod a+w /usr/local/bin
sudo chmod -R 777 /usr/local/lib
也可以都用 -R 777指令
sudo chmod -R 777 /usr/local/bin
sudo chmod -R 777 /usr/local/lib
为相应文件夹添加权限后,再次使用pip安装第三方库,发现问题已解决。
五、解决问题:conda虚拟环境pip安装第三方库出现Defaulting to user installation because normal site-packages is not writeable
华为昇腾的Atlas 200I DK A2开发板在线烧录镜像后默认安装的miniconda3和pip,pip安装第三方包时出现问题:
Defaulting to user installation because normal site-packages is not writeable
网上查找问题解决方案是修改site.py文件,(自我感觉不太妥当)
通过pip show查包安装位置时发现包安装在/home/ ××× /.local/lib/python3.9/site-packages中,如下图所示
这是由于没有足够的权限把包写入系统级别的Python安装目录所致。。可以在终端中输入下列代码添加权限:(根据自己虚拟环境python)
(最下面的sudo chmod -R 777可以为文件夹内所有文件添加权限)
sudo chmod a+w /usr/local/miniconda3/lib/python3.9/site-packages
sudo chmod a+w /usr/local/miniconda3/bin
sudo chmod -R 777 /usr/local/miniconda3/lib/python3.9/site-packages/
sudo chmod -R 777 /usr/local/miniconda3/bin
出现报错:ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: '/usr/local/miniconda3/bin/runxlrd.py'
Consider using the `--user` option or check the permissions.
就是因为没有权限安装包,在终端中输入第二行的 sudo chmod a+w /usr/local/miniconda3/bin指令即可(出现错误的包没安装上,要卸载后重新安装)
六、解决效果
重新安装包后,再通过pip show可以看到包安装在miniconda3中