Après l'installation de mechanize , il semble que je ne puisse pas l'importer.
J'ai essayé d'installer depuis pip, easy_install et via python setup.py install
depuis ce dépôt: https://github.com/abielr/mechanize . Tout cela en vain, car chaque fois que j'entre dans mon interactif Python, je reçois:
Python 2.7.3 (default, Aug 1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mechanize
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named mechanize
>>>
Les installations que j’avais exécutées précédemment indiquaient qu’elles s’étaient bien terminées. L’importation devrait donc fonctionner. Qu'est-ce qui pourrait causer cette erreur?
dans mon cas, c'est un problème de permission. Le paquet était en quelque sorte installé avec la permission root seulement, les autres utilisateurs ne peuvent pas y accéder!
J'ai eu le même problème: script avec import colorama
jetait et ImportError, mais Sudo pip install colorama
me disait "paquet déjà installé".
Mon correctif: exécutez pip sans Sudo : pip install colorama
. Puis pip a convenu qu'il devait être installé, l'a installé et mon script a été exécuté.
Mon environnement est Ubuntu 14.04 32 bits; Je pense avoir vu cela avant et après avoir activé mon virtualenv.
UPDATE: Encore mieux, utilisez python -m pip install <package>
. L'avantage de ceci est que, puisque vous exécutez la version spécifique de python dans laquelle vous voulez insérer le paquet, pip l'installera sans équivoque sur le "bon" python. Encore une fois, not n'utilise pas Sudo dans ce cas ... alors vous obtenez le paquet au bon endroit, mais éventuellement avec des permissions root (non désirées).
C'est le problème du chemin de python.
Dans mon cas, j'ai installé python dans:
/Bibliothèque/Frameworks/Python.framework/Versions/2.6/bin/python,
et il n'y a pas de répertoire site-packages dans python2.6.
Le package (SOAPpy) que j'ai installé par pip se trouve
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
Et site-package n’est pas dans le chemin python, je n’ai fait qu’ajouter site-packages à PYTHONPATH de manière permanente.
Dans le fichier texte qui apparaît, ajoutez cette ligne à la fin:
export PYTHONPATH = $ PYTHONPATH: /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
Le mécanisme d'importation Python fonctionne, vraiment, donc, soit:
Je me suis cogné la tête contre mon moniteur à ce sujet jusqu’à ce qu’un jeune stagiaire me dise que le secret est de "python setup.py install" dans le répertoire du module.
Pour une raison quelconque, exécuter le programme d'installation à partir de là le fait simplement fonctionner.
Pour être clair, si le nom de votre module est "foo":
[burnc7 (2016-06-21 15:28:49) git]# ls -l
total 1
drwxr-xr-x 7 root root 118 Jun 21 15:22 foo
[burnc7 (2016-06-21 15:28:51) git]# cd foo
[burnc7 (2016-06-21 15:28:53) foo]# ls -l
total 2
drwxr-xr-x 2 root root 93 Jun 21 15:23 foo
-rw-r--r-- 1 root root 416 May 31 12:26 setup.py
[burnc7 (2016-06-21 15:28:54) foo]# python setup.py install
<--snip-->
Si vous essayez d'exécuter setup.py à partir d'un autre répertoire en appelant son chemin, vous obtenez une installation compliquée.
NE MARCHE PAS:
python /root/foo/setup.py install
FONCTIONNE:
cd /root/foo
python setup.py install
Je n'arrivais pas à faire fonctionner mon PYTHONPATH correctement. J'ai réalisé que l'ajout de export
corrigeait le problème:
(a travaillé)
export PYTHONPATH=$PYTHONPATH:~/test/site-packages
vs.
(n'a pas marché)
PYTHONPATH=$PYTHONPATH:~/test/site-packages
Dans mon cas, j'avais exécuté pip install Django==1.11
et il n'importerait pas à partir de l'interprète python
.
En parcourant les commandes de pip, j'ai trouvé pip show
qui ressemblait à ceci:
> pip show Django
Name: Django
Version: 1.11
...
Location: /usr/lib/python3.4/site-packages
...
Notez que l'emplacement indique '3.4'. J'ai trouvé que la commande python
- était liée à python2.7
/usr/bin> ls -l python
lrwxrwxrwx 1 root root 9 Mar 14 15:48 python -> python2.7
Juste à côté de cela, j'ai trouvé un lien appelé python3
et je l'ai donc utilisé. Vous pouvez également changer le lien en python3.4
. Cela réglerait le problème aussi.
Dans mon cas, c’était un problème avec un fichier init . Py manquant dans le module, que je voulais importer dans un environnement Python 2.7.
Python 3.3+ a des packages d’espaces de noms implicites qui lui permettent de créer des packages sans fichier init . Py.
Je l'ai rencontré en essayant d'utiliser un trousseau que j'avais installé via Sudo pip install keyring
. Comme mentionné dans les autres réponses, il s'agit d'un problème d'autorisations dans mon cas.
Ce qui a fonctionné pour moi:
Sudo pip uninstall keyring
-H
de Sudo et réinstallé le trousseau de clés: Sudo -H pip install keyring
J'espère que cela t'aides.
J'ai pu corriger ce problème avec une approche combinée. Tout d'abord, j'ai suivi les conseils de Chris, ouvert une ligne de commande et tapé 'pip show packagename' Cela fournissait l'emplacement du paquet installé.
Ensuite, j'ai ouvert python et tapé "import sys", puis "sys.path" pour indiquer où mon python recherche les packages que je importe. Hélas, l'emplacement indiqué à la première étape ne figurait PAS dans la liste.
Dernière étape, j'ai tapé 'sys.path.append (' package_location_seen_in_step_1 '). Vous pouvez éventuellement répéter l'étape 2 pour voir que l'emplacement est maintenant dans la liste.
Étape de test, essayez d’importer à nouveau le paquet ... ça marche.
Le mauvais côté? C'est temporaire et vous devez l'ajouter à la liste à chaque fois.
J'ai eu ce problème exact, mais aucune des réponses ci-dessus n'a fonctionné. Cela m'a rendu fou jusqu'à ce que je remarque que sys.path était différent après l'importation du projet parent. Il s'est avéré que j'avais utilisé importlib pour écrire une petite fonction afin d'importer un fichier ne se trouvant pas dans la hiérarchie du projet. Mauvaise idée: j'ai oublié que j'avais fait ça. Pire encore, le processus d’importation mis à mal avec le sys.path - et l’a laissé ainsi. Très mauvaise idée.
La solution consistait à arrêter cela et à mettre simplement le fichier que je devais importer dans le projet. Une autre approche aurait été de placer le fichier dans son propre projet, car il doit être reconstruit de temps en temps, et la reconstruction peut ou non coïncider avec la reconstruction du projet principal.
Peut-être un peu hors sujet, mais j'avais des problèmes à import PyYAML
. Fait remarquer que vous devez import yaml
. (suppose que c'est un RTF classique ...)
Quelque chose qui a fonctionné pour moi était:
python -m pip install -user {package name}
La commande ne nécessite pas Sudo. Cela a été testé sur OSX Mojave.
J'ai eu un problème similaire en utilisant Django. Dans mon cas, je pouvais importer le module à partir du shell Django, mais pas à partir d'un fichier .py qui importait le module.
Le problème était que j'exécutais le serveur Django (et donc le fichier .py) à partir d'un virtualenv différent à partir duquel le module avait été installé.
Au lieu de cela, l'instance du shell était en cours d'exécution dans le fichier virtualenv approprié. Par conséquent, pourquoi cela a fonctionné.
Cela marche!!!
Cela se produit souvent lorsque le module est installé dans une version plus ancienne de python ou dans un autre répertoire. Aucun problème, la solution est simple. - importer le module à partir du répertoire dans lequel le module est installé. Pour ce faire, commencez par importer le module python sys
à partir de son chemin d'installation.
import sys
sys.path.append("directory in which module is installed")
import <module_name>
Si les autres réponses mentionnées ne fonctionnent pas pour vous, essayez de supprimer votre cache pip et de réinstaller le paquet. Ma machine fonctionne sous Ubuntu14.04 et se trouvait sous ~/.cache/pip
. Supprimer ce dossier a fait l'affaire pour moi.
Je suis nouveau sur python .. J'ai résolu ce problème en modifiant le chemin de l'interpréteur de projet.File -> Settings -> Project -> Project Interpreter
La plupart des cas possibles ont déjà été traités dans des solutions. Tout en partageant mon cas, il m'est arrivé d'installer un package dans un environnement (par exemple, X
) et de l'importer dans un autre environnement (par exemple, Y
). Veillez donc toujours à importer le package à partir de l'environnement dans lequel vous l'avez installé.
J'ai eu un problème similaire (sur Windows) et la cause principale dans mon cas étaitANTIVIRUSlogiciel! Il a la fonctionnalité "Autonferment" qui enveloppe le processus en cours avec une sorte de machine virtuelle . Les symptômes sont: pip install somemodule
fonctionne correctement dans une fenêtre de ligne de commande et import somemodule
échoue lorsqu’il est exécuté à partir d’un autre processus avec l’erreur
ModuleNotFoundError: No module named 'somemodule'
J'espère que cela fera gagner du temps à quelqu'un :)
J'ai eu ce problème avec 2.7 et 3.5 installés sur mon système essayant de tester un bot de télégramme avec Python-Telegram-Bot .
Je ne pouvais pas le faire fonctionner après l'installation avec pip et pip3, avec Sudo ou sans. J'ai toujours eu:
Traceback (most recent call last):
File "telegram.py", line 2, in <module>
from telegram.ext import Updater
File "$USER/telegram.py", line 2, in <module>
from telegram.ext import Updater
ImportError: No module named 'telegram.ext'; 'telegram' is not a package
La lecture correcte du message d'erreur m'indique que python recherche un telegram.py
dans le répertoire en cours. Et à droite, j’avais un script appelé télégramme.py qui était chargé par python lorsque j’ai appelé import
.
Conclusion, assurez-vous que vous n’avez pas de package.py
dans votre répertoire de travail actuel lorsque vous essayez d’importer. (Et lisez attentivement le message d'erreur).