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

时间:2017-03-31 18:00:02

标签: python linux pip fedora

这是我在搞砸一切之前所做的事情:

我尝试使用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 {} \;

1 个答案:

答案 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