web-dev-qa-db-fra.com

Les modules sont installés à l'aide de pip sous OSX mais ne sont pas détectés lors de l'importation

J’installe avec succès différents modules à l’aide de pip et ils apparaissent dans le 

pip list

tel que:

beautifulsoup4 (4.4.1)
requests (2.10.0)
Scrapy (1.1.0)

Du terminal

Cependant, chaque fois que j'essaie de l'importer

import beautifulsoup4import bs4 ou import Scrapy ou import requests

l'erreur suivante est affichée:

$ python
Python 2.7.5 (default, Mar  9 2014, 22:15:05) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named requests

_/Update: si je lance python alors que je suis dans le bon répertoire site-packages

$ pwd
/usr/local/lib/python2.7/site-packages
$ python
Python 2.7.5 (default, Mar  9 2014, 22:15:05)
>>> import requests
>>> import bs4
>>> import scrapy

Alors ça marche. Cela résoudrait le problème si vous écriviez directement sur le terminal. Cependant, je ne sais pas comment le faire fonctionner dans un fichier file.py, ce qui sera l'utilisation normale.

Autant que je sache, je n’ai que Python2.7 installé.

De file.py

Si j'ai un fichier.py enregistré dans un dossier local. Cela contient, par exemple

import requests
from bs4 import BeautifulSoup

quand j'essaye

python file.py

J'ai la même erreur.

Approche

La même chose se produit avec n'importe quel autre module de la liste ..__ Je pense que pip les installe dans un répertoire que Python ne lit pas, mais selon ce que j'ai lu, c'est le bon.

Ils sont tous installés ici:

/usr/local/lib/python2.7/site-packages

Sortie demandée par Padraic Cunningham:

$ which -a pip
/usr/local/bin/pip
$ which -a python
/usr/bin/python
/usr/local/bin/python

Sortie demandée par leovp:

$ pip -V
pip 8.1.2 from /usr/local/lib/python2.7/site-packages (python 2.7)

Discussions déjà cochées

J'ai vérifié les discussions suivantes, mais malheureusement elles ne m'ont pas aidé à résoudre le problème:

Des idées sur le problème?

12
J0ANMM

Puisque votre problème peut être causé pour diverses raisons, j'en ai énuméré quelques-unes ici:

Le lien que vous cherchiez: https://pythonhosted.org/setuptools/setuptools.html#development-mode

  • Cela peut aussi arriver si vous avez deux versions de python installées. Si la pip à laquelle vous accédez est d’une version et que l’interpréteur python utilisé en soit une autre.

Veillez donc simplement à utiliser la même version de python pour installer et utiliser le paquet.

Vous pouvez corriger cela en utilisant un alias,

Commencez par configurer un alias de shell:

alias python=/usr/local/bin/python3

Ensuite, tapez-le à l’invite ou mettez-le dans votre ~/.bashrc pour que la version correcte s’ouvre à chaque fois que vous ouvrez python à partir du terminal.

  • Si les deux méthodes ci-dessus ne fonctionnent pas pour vous, vérifiez ceci:

ImportError Aucun module nommé ou ceci

4
Ani Menon

Voici la réponse qui a fonctionné, qui est fondamentalement ce qui a été expliqué dans les commentaires de la question. Cependant, j’ai pensé qu’il serait utile de l’expliquer comme une réponse claire et bien structurée.

Comme souligné, le problème était que je n'utilisais pas l'interpréteur installé par pip pour . La commande which indique l'emplacement où pip installait les modules:

$ which -a pip
/usr/local/bin/pip

et où se trouvaient les différentes versions de python:

$ which -a python
/usr/bin/python
/usr/local/bin/python

C’est-à-dire que mon système/défaut python était 

/usr/bin/python

pendant que pip installait pour 

/usr/local/bin/python

Par conséquent, je ne pouvais pas importer quoi que ce soit que j'ai installé lorsque je viens de taper python, car l'interprète /usr/bin/python est celui qui a été lancé.

Solution

Install pip à nouveau en spécifiant la destination des modules à installer. Ce doit être la destination du python système/par défaut.

Cela a été fait en deux étapes:

  1. Téléchargement get-pip.py de bootstrap.pypa.io/get-pip.py
  2. L'installer avec la commande suivante

    Sudo /usr/bin/python get-pip.py

Notez que sans la Sudo, j'ai eu une erreur et je n'ai pas pu installer pip.

10
J0ANMM

Je viens de résoudre un problème similaire. 

Pour donner un peu de contexte, j'installe pip avec homebrew en exécutant brew install python. Un inconvénient en exécutant cette commande, il installera à la fois python2 et python3 (peut-être pas un inconvénient dans certains cas), puis 

pip install scrapy

mais quand j'essaie de import scrapy, il se plaint ImportError: No module named scrapy.


Ma solution: Exécuter brew doctor, il devrait vous signaler qu'un lien est rompu, il vous demande d'exécuter brew link python, vous risquez de rencontrer des erreurs, mais suivez la suggestion d'invite pour avancer, après avoir exécuté brew link python avec succès, tout devrait fonctionner maintenant.

4
Raymond

Exécutez brew doctordans le terminalit devrait vous donner un avertissement disant: 

Warning: The following directories do not exist:
/usr/local/sbin

You should create these directories and change their ownership to your account.
  Sudo mkdir -p /usr/local/sbin
  Sudo chown -R $(whoami) /usr/local/sbin

tapez Sudo mkdir -p /usr/local/sbin dans le terminal et appuyez sur entrée puis tapez Sudo chown -R $(whoami) /usr/local/sbin puis exécutez python et essayez à nouveau d'importer votre module.

0
user73772