2017-03-31 3 views
0

ici est ce que je l'ai fait avant que je foiré tout:pas pip Nom du module: après avoir changé l'autorisation du dossier python

j'ai essayé d'installer un package à l'aide PIP3, après une longue période le téléchargement terminé et tout à coup l'erreur au sujet permission est venu parce que j'ai oublié d'utiliser sudo au début et parce que je ne voulais pas télécharger les paquets à nouveau et ne savais pas où se trouve le dossier de cache pip, j'ai fait une chose très stupide j'ai changé la permission de tout le python dossier dans le répertoire/usr/bin/installer le paquet sans sudo, après j'ai essayé ceci:

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

i got ces erreurs putain, quelqu'un peut-il m'aider à résoudre ce problème?

Edit: ici est ma séquence de la commande i utilisé:

1-pip3 install tensorflow - l'erreur est venu jusqu'à

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

essayer avec 'pip' pas' pip3' –

+0

je veux installer le paquet en version python3, pip installer en python2.7 par défaut je pense que parce que quand j'ai essayé le pip installer .. il commencer à télécharger à nouveau –

+1

Pour clarifier, pouvez-vous lister la séquence de commandes à utiliser (ma conjecture depuis le début de ce 3)? –

Répondre

2

Première et avant tout, je considère votre approche assez imprudente. Vous avez maintenant changé les permissions de tous les fichiers et répertoires pour le propriétaire, le groupe et les autres.

En principe, vous avez juste besoin de vous assurer que pip3 (par extension, votre compte utilisateur) serait capable d'écrire des fichiers et des répertoires dans un répertoire appartenant à root (vraisemblablement /usr/lib/python3.5/site-packages). Vous pourriez avoir accompli ceci par:

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

Alternativement vous pourriez avoir changé la propriété de ce dossier. IMPORTANT: lorsque vous faites ce genre de chose, assurez-vous de savoir ce que vous faites, et n'oubliez pas de tout changer dès que possible. Les choses peuvent être brisées et des problèmes de sécurité peuvent être créés.

Maintenant, comme une solution à votre problème. Vous avez maintenant donné aux répertoires les permissions suivantes -rwxrw-rw- (6 = 4 (read) + 2 (write)). Cependant, pour les utilisateurs, et les programmes exécutés en son nom, pour faire n'importe quoi dans/depuis un répertoire, ils ont besoin du droit d'exécution. Pour cela, vous devriez avoir utilisé 5 au lieu de 6 (5 = 4 (lire) + 1 (exécuter)). Pour corriger:

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

Ensuite, je pense que pour Python pour charger correctement les bibliothèques compilées (objets partagés ou .so fichiers), ils devraient également avoir ces autorisations. A en juger par mon propre répertoire Python, je ferais probablement:

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

pour tout remettre dans son état d'origine.

P.S. Je ne suis pas expert en pip, donc je n'ai aucune idée de ce que le protocole est d'éviter pip de re-télécharger lors d'une nouvelle tentative d'installation échouée.