web-dev-qa-db-fra.com

Le module d'installation de pip Python est introuvable. Comment lier python à l'emplacement du pip?

Je suis un débutant et j'avais besoin du module pySerial et feedparser pour mes projets. Je cours Mountain Lion.

J'ai suivi le didacticiel suivant pour pouvoir effectuer une mise à niveau vers Python 2.7.3, puis utiliser les modules susmentionnés.

http://hackercodex.com/guide/python-virtualenv-on-mac-osx-mountain-lion-10.8/

J'ai suivi ce tutoriel jusqu'à l'installation de pip. Au lieu d'installer Virtualenv. J'ai utilisé les commandes suivantes pour installer pySerial et feedparser

$ pip install pySerial
Requirement already satisfied (use --upgrade to upgrade): pySerial in /Library/Python/2.7/site-packages
Cleaning up...

J'ai supposé que c'était déjà présent et l'ai vérifié. Python semble importer cela très bien. Ma version python a été mise à niveau vers la version 2.7.3 btw depuis que je l'ai installée à l'aide de l'homebrew, comme indiqué dans le didacticiel.

Ensuite, j'ai essayé d'installer feedparser

$ pip install feedparser
Requirement already satisfied (use --upgrade to upgrade): feedparser in /usr/local/lib/python2.7/site-packages
Cleaning up...

Remarquez comment cela se trouve dans le répertoire site-packages du répertoire usr/local/lib.

Toutes mes installations pip sont en cours d'installation dans ce répertoire, mais python ne semble pas les récupérer lorsque j'essaie de les importer. 

Comment définir le chemin de sorte que python y regarde également ainsi que le répertoire principal?

Votre aide sera grandement appréciée.

J'ai essayé de chercher des réponses ici: Pip installe mais le module n’a pas été trouvéPourquoi je ne peux pas importer beautifulsoup sur mac en utilisant python 2.7 après l’avoir installé en utilisant pip et/ou easy_install?

mais niether d'entre eux sont dans la même situation que moi. Je ne comprends pas pourquoi cela se produit lorsque j'ai modifié mon profil bash avec les éléments suivants

# Set architecture flags
export ARCHFLAGS="-Arch x86_64"
# Ensure user-installed binaries take precedence
export PATH=/usr/local/share/python:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
# Load .bashrc if it exists
test -f ~/.bashrc && source ~/.bashrc

puis homebrew installé et ensuite installé python 2.7.3 via homebrew (2.7.3 est maintenant en cours d'exécution sur ma machine) 

J'ai pensé que toutes les installations pip seraient correctement liées?

23
user1953478

Pour résoudre rapidement ce problème et en supposant que vous utilisez un terminal de type bash (Linux/OSX), vous pouvez essayer d’exporter la variable d’environnement PYTHONPATH:

export PYTHONPATH="${PYTHONPATH}:/usr/local/lib/python2.7/site-packages:/usr/lib/python2.7/site-packages"

Pour Python 2.7

42
Ruslan

Voici une chose que j'ai apprise après de longs problèmes avec pip lorsque plusieurs versions de Python étaient installées (valable en particulier pour les utilisateurs d'OS X qui utilisent probablement brew pour installer des mélanges python.)

Je suppose que la plupart des développeurs python ont au début de leurs scripts:

#!/bin/env python

Vous serez peut-être surpris d'apprendre que ce n'est pas nécessairement le même python que celui que vous exécutez à partir de la ligne de commande >python

Pour être sûr que vous installez le paquet en utilisant l'instance pip appropriée pour votre interpréteur python, vous devez exécuter quelque chose comme:

>/bin/env python -m pip install --upgrade mymodule
9
sorin

J'ai aussi eu ce problème. J'ai remarqué que tous les sous-répertoires et fichiers sous /usr/local/lib/python2.7/dist-packages/ n'avaient pas d'autorisation de lecture ou d'écriture pour le groupe et les autres et qu'ils appartenaient à root. Cela signifie que seul l'utilisateur root peut y accéder. Ainsi, tout utilisateur ayant tenté d'exécuter un script Python utilisant l'un de ces modules a reçu une erreur d'importation:

$ python
Python 2.7.3 (default, Apr 10 2013, 06:20:15) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import Selenium
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named Selenium
>>> 

J'ai accordé une permission de lecture sur les fichiers et une permission de recherche sur les sous-répertoires du groupe et autres, comme ceci:

$ Sudo chmod -R go+rX /usr/local/lib/python2.7/dist-packages

Et cela a résolu le problème pour moi:

$ python
Python 2.7.3 (default, Apr 10 2013, 06:20:15) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import Selenium
>>> 

J'ai installé ces paquets avec pip (exécuté en tant que root avec Sudo). Je ne sais pas pourquoi il les a installés sans accorder des autorisations de lecture/recherche. Cela ressemble à un bogue dans pip pour moi, ou peut-être dans la configuration du paquet, mais je ne suis pas très familier avec Python et son emballage de module, donc je ne le sais pas avec certitude. FWIW, tous les paquets sous dist-packages avaient ce problème. Quoi qu'il en soit, espérons que cela aide.

Cordialement.

7
boshea

Aucune autre solution ne fonctionnait pour moi, alors j'ai essayé:

pip uninstall <module> && pip install <module>

Et cela l'a résolu pour moi. Votre kilométrage peut varier.

4
Cory Klein

Pour moi, le problème était que j'avais des paramètres de configuration étranges dans le fichier pydistutils.cfg

Essayez de lancer rm ~/.pydistutils.cfg

0
yask

comment avez-vous installé easy_install/pip? assurez-vous de l'avoir installé pour la version mise à niveau de python. ce qui aurait pu arriver ici est que l'ancienne installation (par défaut) de python pourrait être liée à votre installation de pip. vous voudrez peut-être essayer d'exécuter la version par défaut et d'importer les modules nouvellement installés. 

0
Akash