没有模块名称 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
(通过扩展,您的用户帐户)能够在 root 拥有的目录(大概是 /usr/lib/python3.5/site-packages
)中写入文件和目录。您可以通过以下方式完成此操作:
sudo chmod o+w /usr/lib/python3.5/site-packages
或者您可以更改此文件夹的所有权。 重要提示:在做这种事情的时候,一定要清楚自己在做什么,不要忘记尽快把所有的东西都改回来。事情可能会被破坏,并且可能会产生安全问题。
现在来解决您的问题。您现在已为目录授予以下权限 -rwxrw-rw-
(6 = 4(读)+ 2(写))。但是,对于用户和代表它执行的程序来说,要执行任何操作 to/from 他们需要执行权限的目录。为此,您应该使用 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
重新下载的协议是什么。
这是我在搞砸一切之前所做的:
我尝试使用 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
(通过扩展,您的用户帐户)能够在 root 拥有的目录(大概是 /usr/lib/python3.5/site-packages
)中写入文件和目录。您可以通过以下方式完成此操作:
sudo chmod o+w /usr/lib/python3.5/site-packages
或者您可以更改此文件夹的所有权。 重要提示:在做这种事情的时候,一定要清楚自己在做什么,不要忘记尽快把所有的东西都改回来。事情可能会被破坏,并且可能会产生安全问题。
现在来解决您的问题。您现在已为目录授予以下权限 -rwxrw-rw-
(6 = 4(读)+ 2(写))。但是,对于用户和代表它执行的程序来说,要执行任何操作 to/from 他们需要执行权限的目录。为此,您应该使用 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
重新下载的协议是什么。