这是我在搞砸一切之前所做的事情:
我尝试使用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 {} \;
答案 0 :(得分:2)
首先,我认为你的做法非常不明智。您现在已更改所有者,组和其他所有文件和目录的权限。
原则上,您只需要确保pip3
(扩展名为您的用户帐户)能够在root拥有的目录中写入文件和目录(可能是/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 {} \;
将所有内容都设置回原始状态。
P.S。我不是pip
的专家,所以我不知道协议是什么,以避免在重试失败的安装时重新下载pip
。