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)
Cependant, chaque fois que j'essaie de l'importer
import beautifulsoup4
import 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é.
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.
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)
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?
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
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.
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é.
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:
get-pip.py
de bootstrap.pypa.io/get-pip.pyL'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.
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.
Exécutez brew doctor
dans 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.