繁体   English   中英

没有模块名称pip:更改python文件夹的权限后

[英]no module name pip : after changing permission of python folder

这是我在弄乱一切之前所做的事情:

我尝试使用pip3安装软件包,经过很长时间的下载后突然出现了关于权限的错误,因为我一开始忘记使用sudo,因为我不想再次下载软件包,也不知道在哪里是pip缓存文件夹,我做了一个非常愚蠢的事情,我更改了/ usr / bin /中整个python文件夹的权限,以安装没有sudo的软件包,在此之后,我尝试了以下操作:

pip3 install tensorflow
File "/usr/bin/pip3", line 7, in <module>
    from pip import main
ImportError: No module named 'pip'

我遇到了这些该死的错误,有人可以帮我解决这个问题吗?

编辑:这是我使用的命令序列:

1- pip3 install tensorflow出现错误

2- sudo find /usr/lib/python3.5/ -type d -exec chmod 766 {} \\;

3- sudo find /usr/lib/python3.5/ -type f -exec chmod 766 {} \\;

首先,也是最重要的是,我认为您的做法非常不明智。 现在,您已经更改了所有者,组和其他人的所有文件和目录的权限。

原则上,您只需要确保pip3 (扩展名,您的用户帐户)将能够在根目录(大概是/usr/lib/python3.5/site-packages )拥有的目录中写入文件和目录。 您可以通过以下方式完成此操作:

sudo chmod o+w /usr/lib/python3.5/site-packages

或者,您可以更改此文件夹的所有权。 重要说明:做这种事情时,请务必知道自己在做什么,并且不要忘记尽快将所有内容改回来。 事情可能会破裂,并且可能会创建安全问题。

现在就解决您的问题。 现在,您已为目录赋予以下权限-rwxrw-rw- (6 = 4(读)+ 2(写))。 但是,对于用户及其代表执行的程序而言,在目录中执行任何操作或从目录执行任何操作,都需要他们有权执行。 为此,您应该使用5而不是6(5 = 4(读取)+1(执行))。 纠正:

sudo find /usr/lib/python3.5/ -type d -exec chmod 755 {} \;

然后,我认为要让Python正确加载已编译的库(共享库或.so文件),它们也应具有这些权限。 从我自己的Python目录来看,我可能会这样做:

sudo find /usr/lib/python3.5/ -type f -exec chmod 644 {} \;
sudo find /usr/lib/python3.5/ -type f -iname '*.so' -exec chmod 755 {} \;

将所有内容恢复为原始状态。

PS:我不是pip专家,所以我不知道避免重试安装后要重新下载pip的协议是什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM