ImportError: aucun module nommé 'encodings'

106

J'ai récemment réinstallé ubuntu et mis à niveau vers 16.04 et je ne peux pas utiliser python:

$ python manage.py runserver
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
Aborted

À ce stade, python lui-même ne fonctionne pas

$ python
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
Aborted

Même cette suggestion ne fonctionne plus:

unset PYTHONHOME
unset PYTHONPATH

Chaque fois que je le répare dans un sens, cela revient. Plusieurs réponses aident à le réparer temporairement, mais pas pour de bon. J'ai réinstallé python et python3 plusieurs fois. Que puis-je faire d'ici? Je vous remercie

codyc4321
la source
Est-ce lié à Django ou simplement à Python? Vous souhaiterez peut-être modifier votre question avec la balise appropriée.
Moses Koledoye
2
juste python, il se trouve que j'utilisais django
codyc4321
Il semble que l'installation de python soit incomplète. Avez-vous installé python via apt ou l'avez-vous compilé et installé à partir des sources? Exécutez which pythonpour vérifier quel binaire python vous avez en premier dans $ PATH.
HAL
Avez-vous essayé de désinstaller et de réinstaller python2 et python3 via apt?
J'ai rencontré cela en utilisant la pile Bitnami Django en essayant de pip3 install -r requirements.txt dans un environnement virtuel. Cela a bien fonctionné sans utiliser l'environnement virtuel. Je n'ai pas pris le temps de comprendre pourquoi c'était un problème.
Brad Rhoads

Réponses:

88

Pour Python-3, essayez de supprimer les fichiers d'environnement virtuel. Et le réinitialiser.

rm -rf venv
virtualenv -p /usr/bin/python3 venv/
source venv/bin/activate
pip install -r requirements.txt

https://wiki.ubuntu.com/XenialXerus/ReleaseNotes#Python_3 modifier fo

Anoop Malav
la source
2
Génial! Merci de m'avoir appris à installer python3 dans un env en utilisant la virtualenvcommande! Pour une raison quelconque, il m'a fallu environ 2 mois pour le trouver. Amazing ...
MadPhysicist
2
Salut, j'ai essayé de le faire sur mon appareil Amazon AMI (basé sur RHEL) mais cela ne fonctionne pas. Une autre façon de le résoudre?
Divij Sehgal
1
lorsque j'ai entré la dernière commande, cela me donne une erreur ci-dessous, pouvez-vous s'il vous plaît résoudre ... Impossible d'ouvrir le fichier des exigences: [Errno 2] Aucun fichier ou répertoire de ce type: 'requirements.txt'
Deepak Chawla
1
@DeepakChawla requirements.txt doit être présent dans le pwd à partir duquel vous exécutez cette commande et cela n'a rien à voir avec la création d'environnement, c'est un moyen d'installer des packages en mode batch.
Amar
7
Ne devrait-il pas l'être source venv/bin/activate?
Keith
16

Pour l'utilisateur Windows10.

J'utilisais python3.4 sur Windows10. J'ai installé python3.5. Je n'ai pas pu trouver PYTHONPATH, variable d'env PYTHONHOME. Si je commande python dans la console CMD, il a continué à utiliser python3.4. J'ai supprimé python3.4. Chaque fois que je commande python dans la console CMD, il commence à afficher une erreur comme ci-dessous.

Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'

J'ai cherché à comprendre mon problème. La solution était simple. Lorsque vous installez python3.5, vous pouvez personnaliser l'installation et cocher Ajouter Python aux variables d'environnement dans les Options avancées.

Je laisse juste ici pour le cas où quelqu'un aurait des problèmes similaires, visite ici afin de ne pas perdre son temps précieux à comprendre.

Jayground
la source
11

J'étais confronté au même problème sous Windows7. Le message d'erreur ressemble à ça:

Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Current thread 0x000011f4 (most recent call first):

J'ai installé python 2.7 (désinstallé maintenant), et j'ai coché "Ajouter Python aux variables d'environnement dans les options avancées" lors de l'installation de python 3.6. Il ressort que la variable d'environnement " PYTHONHOME " et " PYTHONPATH " est toujours python2.7.

Enfin, je l'ai résolu en modifiant " PYTHONHOME " en chemin d'installation python3.6 et en supprimant la variable " PYTHONPATH ".

Li Qiao
la source
9

Pour le même problème sous Windows7

Vous verrez une erreur comme celle-ci si vos variables d'environnement / variables système ne sont pas correctement définies:

Fatal Python error: Py_Initialize: unable to load the file system codec
ImportError: No module named 'encodings'

Current thread 0x00001db4 (most recent call first):

Résoudre cela est vraiment simple:

  1. Lorsque vous téléchargez la version Python3.x et exécutez le fichier .exe, cela vous donne une option pour personnaliser l'emplacement de votre système où vous souhaitez installer Python. Par exemple, j'ai choisi cet emplacement: C: \ Program Files \ Python36

  2. Ensuite, ouvrez les propriétés système et allez dans l' onglet " Avancé " (Ou vous pouvez simplement faire ceci: Allez dans Démarrer> Rechercher des " variables d'environnement "> Cliquez sur "Modifier les variables d'environnement système".) Sous l'onglet "Avancé", recherchez "Variables d'environnement" et cliquez dessus. Une autre fenêtre avec le nom "Variables d'environnement" apparaîtra.

  3. Assurez-vous maintenant que vos variables utilisateur ont le chemin Python correct répertorié dans "Variable de chemin". Dans mon exemple ici, vous devriez voir C: \ Program Files \ Python36 . Si vous ne le trouvez pas, ajoutez-le en sélectionnant le champ Variable de chemin et en cliquant sur Modifier.

  4. La dernière étape consiste à vérifier les champs PYTHONHOME et PYTHONPATH sous Variables système dans la même fenêtre. Vous devriez voir le même chemin que celui décrit ci-dessus. Sinon, ajoutez-le là aussi.

Cliquez ensuite sur OK et revenez au terminal CMD, et essayez de vérifier python. Le problème doit maintenant être résolu. Cela a fonctionné pour moi.

dotpy_novice
la source
C'est exactement la même chose sur win10. Dans mon cas, il s'agissait simplement de PYTHONHOME et PYTHONPATH configurés sur une installation plus ancienne.
Andrés Marafioti
@dotpy_novice Pourriez-vous s'il vous plaît souligner l'étape 4 en détail? Je n'avais aucun chemin répertorié dans mes variables utilisateur et j'ai ajouté comme vous l'avez dit à l'étape 3. Maintenant, j'hésite un peu à continuer. Il n'y a pas de PYTHONHOME et PYTHONPATH dans les variables système. Dois-je les créer moi-même, si oui, que dois-je insérer pour le nom et la valeur de la variable ?
bit_scientist
6

J'ai eu cette erreur lors de la migration vers Ubuntu 17.10, et cela a résolu le problème:

sudo dpkg-reconfigure python3

Vous devrez peut-être fermer votre session et vous reconnecter.

Numahell
la source
J'ai 16.04, cela n'a pas résolu mon problème. J'essaie juste de comprendre, pourquoi est-ce arrivé
Xavitoj Cheema
Même problème sur ubuntu 16.4 .. Dois-je réinstaller Ubuntu? /usr/sbin/dpkg-reconfigure: python3 ist kaputt oder nicht komplett installiert
Timo
On 18.04 Lubuntu, il ditFatal Python error: Py_Initialize: Unable to get the locale encoding
Timo
1

Regardez /lib/python3.5 et vous verrez des liens rompus vers les bibliothèques python. Recréez-le dans le répertoire de travail.

Erreur suivante -

./script/bin/pip3
Failed to import the site module
Traceback (most recent call last):
  File "/home/script/script/lib/python3.5/site.py", line 703, in <module>
    main()
  File "/home/script/script/lib/python3.5/site.py", line 683, in main
    paths_in_sys = addsitepackages(paths_in_sys)
  File "/home/script/script/lib/python3.5/site.py", line 282, in addsitepackages
    addsitedir(sitedir, known_paths)
  File "/home/script/script/lib/python3.5/site.py", line 204, in addsitedir
    addpackage(sitedir, name, known_paths)
  File "/home/script/script/lib/python3.5/site.py", line 173, in addpackage
    exec(line)
  File "<string>", line 1, in <module>
  File "/home/script/script/lib/python3.5/types.py", line 166, in <module>
    import functools as _functools
  File "/home/script/script/lib/python3.5/functools.py", line 23, in <module>
    from weakref import WeakKeyDictionary
  File "/home/script/script/lib/python3.5/weakref.py", line 12, in <module>
    from _weakref import (
ImportError: cannot import name '_remove_dead_weakref'

corrigé comme ça - /ubuntu/907035/importerror-cannot-import-name-remove-dead-weakref

cd my-virtualenv-directory
virtualenv . --system-site-packages
IvanTheFirst
la source
1

J'étais confronté à ce problème "ModuleNotFoundError: Aucun module nommé 'encodings" après la mise à jour vers macOS Catalina.

J'avais plusieurs versions de Python installées dans mon système.

La suppression de toutes les versions de python (2.7 et 3.7.4) du système macOS et la réinstallation de la dernière version de python 3.8 ont fonctionné pour moi.

Pour supprimer un python de macOS, j'ai suivi les instructions d'ici Comment désinstaller Python 2.7 sur un Mac OS X 10.6.4?

Le lien ci-dessus est pour python 2.7 et vous pouvez également l'utiliser pour 3.7.

Kondal Kolipaka
la source
0

J'ai eu un problème similaire. J'avais à la fois anaconda et python installés sur mon ordinateur et mes dépendances python provenaient du répertoire Anaconda. Lorsque j'ai désinstallé Anaconda, cette erreur a commencé à apparaître. J'ai ajouté PYTHONPATHmais ça n'a toujours pas marché. J'ai vérifié python -versionet je me suis rendu compte qu'il empruntait toujours le chemin de l'anaconda. J'ai dû supprimer manuellement le répertoire Anaconda3 et après cela, python a commencé à prendre des dépendances PYTHONPATH.
Problème résolu!

Satyam Gaba
la source
0

J'ai eu le même problème lors de la mise à jour de mon mac vers macOS Catalina, lors de l'utilisation pipenv. Pipenv crée et gère un virtualenvpour vous, donc la suggestion précédente de @ Anoop-Malav est la même, il suffit d'utiliser pipenv pour supprimer l'environnement virtuel en fonction du répertoire actuel et le réinitialiser:

pipenv --rm
pipenv shell  # recreate a virtual env with your current Pipfile
qix
la source
0

Dans mon cas, la simple modification des autorisations du dossier anaconda a fonctionné:

sudo chmod -R u=rwx,g=rx,o=rx /path/to/anaconda   
Apogentus
la source
-1

Comme il s'agit du premier résultat dans google, je souhaite simplement ajouter les informations suivantes pour toute personne ayant des problèmes avec les prisons:

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00007f079b16d740 (most recent call first):
Aborted (core dumped)

Lorsque vous tentez d'importer python dans votre prison, vous devez tous deux lier les dépendances et /usr/lib/pythonX.Y à [JAIL] / usr / lib /. J'espère que cela t'aides.

Mat
la source
Cher @matt, pouvez-vous s'il vous plaît fournir les étapes pour «emprisonner» pythonx.y?
Pranav
@Pranav J'utilise ce script: gist.github.com/williamhaley/5a499cd7c83aa0e01eaf, vous pouvez ensuite exécuter copy_binary pythonX.Y puis trouver les bibliothèques sous votre racine réelle /usr/lib/pythonX.Y où XY est votre version python (pour exemple python3.7). Copiez-les dans vos prisons / usr / lib / et vous êtes prêt. Cheers
Matt
-2

Allez simplement dans Fichier -> Paramètres -> sélectionnez Interpréteur de projet sous l'onglet Projet -> cliquez sur la petite icône d'engrenage -> Ajouter -> Interpréteur système -> sélectionnez la version de python souhaitée dans le menu déroulant

cela a semblé fonctionner pour moi

Balu B
la source
ce n'est pas son problème
NotSoShabpar
-12

Je pourrais aussi résoudre ce problème. PYTHONPATH et PYTHONHOME étaient en cause.

lancez ceci dans un terminal

   touch ~/.bash_profile
   open ~/.bash_profile

puis supprimez toutes les parties inutiles de ce fichier et enregistrez. Je ne sais pas à quel point il est recommandé de faire ça!

Pber6154
la source