ImportError: aucun module nommé site sous Windows

102

J'essaye d'installer Python pour la première fois. J'ai téléchargé le programme d'installation suivant à partir du site Web de Python: Python 2.7.1 Windows Installer (binaire Windows - n'inclut pas la source) . J'ai ensuite exécuté le programme d'installation, sélectionné «Tous les utilisateurs» et tout allait bien. J'ai installé Python dans l'emplacement par défaut:

C:\Python27

Ensuite, pour tester que Python a été installé correctement, j'ai navigué vers mon répertoire Python et j'ai exécuté la commande "python" dans l'invite cmd de Windows. Cela me renvoie l'erreur suivante:

ImportError: aucun module nommé site

Quand je fais 'python -v', j'obtiens ce qui suit:

#installing zipimport hook
import zipimport # builtin
#installed zipimport hook
#ImportError: No module named site #clear builtin ._
#clear sys.path #clear sys.argv
#clear sys.ps1 #clear sys.ps2
#clear sys.exitfunc #clear sys.exc_type
#clear sys.exc_value #clear sys.exc_traceback
#clear sys.last_type #clear sys.last_value
#clear sys.last_traceback #clear sys.path_hooks
#clear sys.path_importer_cache #clear sys.meta_path
#clear sys.flags #clear sys.float_info
#restore sys.stdin # restaurer sys.stdout
#restore sys.stderr #cleanup main
#cleanup [1 ] zipimport #cleanup [1] signal
#cleanup[1 ] exceptions #cleanup [1] _warnings
#cleanup sys #cleanup intégré
#cleanup ints: 6 unfreed ints #cleanup floats

Quand je fais dir, C:\Python27\Lib\site.py*j'obtiens ce qui suit:

C: \ Users \ Mimminito> dir C: \ Python27 \ Lib \ site.py * Le
volume du lecteur C n'a pas d'étiquette.
Le numéro de série du volume est DAB9-A863

Répertoire de C: \ Python27 \ Lib

13/11/2010 20:08 20389 site.py
1 Fichier (s) 20389 octets
0 Dir (s) 694.910.976 octets gratuits

Des idées?

Mimminito
la source
En supposant que vous n'ayez pas changé l'emplacement d'installation par défaut, le fichier C: /Python27/Lib/site.py existe-t-il sur votre ordinateur?
Tim W.
Oui, site.py se trouve dans ce dossier
Mimminito
7
@Mimminito: Je suis curieux (légèrement) de savoir pourquoi vous avez disparu pendant 9 mois et que vous venez d'accepter ma réponse, et (grandement) si vous avez jamais découvert quel était le problème sous-jacent.
John Machin
Je reçois ce problème actuellement. Je ne sais pas pourquoi et j'ai parcouru Internet pour trouver une solution. Il n'arrête pas de dire ImportError: Aucun module nommé site, peu importe comment j'installe python et ce que je mets dans mes PATH. Je voudrais savoir comment python charge réellement site.py. Il s'agit évidemment d'un problème de chemin relatif / absolu. Et si je pouvais simplement configurer le chemin de python directement sans recourir à des coups aléatoires dans le noir.
CMCDragonkai
3
J'ai eu ce problème. J'invoquais depuis Cygwin qui avait le chemin de type unix pour PYTHONPATH. Je l'ai converti en chemin de style Windows avec export PYTHONPATH=$(cygpath -w $PYTHONPATH)et cela fonctionne très bien. Ajout de cette note pour aider d'autres personnes susceptibles de venir sur cette page avec le même problème.
robert

Réponses:

145

Je me suis penché sur ce problème pour moi-même pendant près d'un jour et j'ai finalement eu une percée. Essaye ça:

  1. Définition des variables PYTHONPATH / PYTHONHOME

    Cliquez avec le bouton droit sur l' icône Ordinateur dans le menu Démarrer , accédez aux propriétés . Dans l'onglet de gauche, accédez aux paramètres système avancés . Dans la fenêtre qui apparaît, allez dans l' onglet Avancé , puis en bas, cliquez sur Variables d'environnement . Cliquez dans la liste des variables utilisateur et commencez à taper Python, et répétez pour les variables système , juste pour vous assurer que vous n'avez pas de variables mal définies pour PYTHONPATH ou PYTHONHOME. Ensuite, ajoutez de nouvelles variables (je l'ai fait dans System plutôt que User, bien que cela puisse également fonctionner pour User): PYTHONPATH, défini sur C: \ Python27 \ Lib . PYTHONHOME, défini sur C: \ Python27 .

J'espère que cela t'aides!

RenderCase
la source
7
Et vous devez également ajouter% PYTHONHOME% à votre variable de chemin pour que cela fonctionne.
Rishi
7
Ah! Cela devrait être la réponse à la question. Pour moi, c'était une variable PYTHONHOME définie sur un chemin non valide ... Supprimé cela, et maintenant ça marche! Il semble que le mod Alien Swarm de Steam ait ajouté cela.
Timotei
2
La définition d'aucune PYTHONPATH/PYTHONHOMEvariable ne devrait être nécessaire pour Python pour localiser le site.pymodule placé dans le Libdossier. Cette réponse est au mieux une solution de contournement.
Piotr Dobrogost
3
Les variables d'environnement sont un cauchemar. Je blâme Linux.
Damien
1
Assurez-vous que vous n'avez pas deux versions de Python installées simultanément. Cela pourrait perturber l'interpréteur, si Python 2.7 est le premier dans% PATH%, et Python3 est défini pour PYTHONHOME, par exemple.
LM.Croisez
41

Solution rapide: définissez PYTHONHOME et PYTHONPATH et incluez PYTHONHOME sur PATH

Par exemple, si vous avez installé sur c: \ Python27

set PYTHONHOME=c:\Python27
set PYTHONPATH=c:\Python27\Lib
set PATH=%PYTHONHOME%;%PATH%

Assurez-vous que vous n'avez pas de '\' à la fin des variables PYTHON *, cela semble le casser.

slckin
la source
3
Si sous Windows 10, c'est maintenant: setx PYTHONHOME "C: \ Python27" setx PYTHONPATH "C: \ Python27 \ Lib" setx PATH "% PYTHONHOME%;% PATH%"
Vesanto
Cela a bien fonctionné pour moi sur Windows 7 avec Python 3.6
Thirst for Knowledge
12

J'avais ce problème après avoir installé Windows Python et Cygwin Python et essayé d'exécuter Cygwin Python à partir de Cygwin. Je l'ai résolu exporten ingérant PYTHONHOME = / usr / et PYTHONPATH = / usr / lib / python2.7

Jorge Vargas
la source
12

Assurez-vous que votre variable d'environnement PYTHONHOME est correctement définie. Vous recevrez cette erreur si PYTHONHOME pointe vers un emplacement non valide ou vers une autre installation Python que vous essayez d'exécuter.

Essaye ça:

C:\>set PYTHONHOME=C:\Python27
C:\>python

Utilisation

setx PYTHONHOME C:\Python27

pour le définir de manière permanente pour les invites de commande suivantes

Mika
la source
6
Utilisez setx PYTHONHOME C:\Python27pour le définir de manière permanente pour les invites de commande suivantes. Sinon, vous devez utiliser la commande set à chaque fois.
Iain Samuel McLean Elder
5

Localisez site.py et ajoutez son chemin dans PYTHONPATH . Cela résoudra votre problème.

DigviJay Patil
la source
4

Essayez-vous d'exécuter Windows Python à partir de Cygwin? J'ai le même problème. Python dans Cygwin ne parvient pas à importer le site. Python dans Cmd fonctionne.

Il semble que vous deviez vous assurer d'exécuter PYTHONHOME et PYTHONPATH cygwin -awpour en faire des chemins Windows. De plus, python semble utiliser des chemins incorrects.

Je pense que je vais devoir installer python via cygwin pour le faire fonctionner.

Idbrii
la source
1
Salut, ce n'est probablement pas encore un problème pour vous, mais au cas où d'autres personnes rencontreraient ce problème, consultez mon commentaire sur la question principale. Fondamentalement, vous devez convertir PYTHONPATHen un chemin de style Windows avec export PYTHONPATH=$(cygpath -w $PYTHONPATH).
robert
4

Pour Windows 10 (suivi de la réponse @slckin), cela peut être défini via la ligne de commande avec:

setx PYTHONHOME "C:\Python27"
setx PYTHONPATH "C:\Python27\Lib"
setx PATH "%PYTHONHOME%;%PATH%"
Vesanto
la source
6
Je ne l' utiliser setx PATH "%PYTHONHOME%;%PATH%"car il met l' utilisateur PATHavec la somme de chemin utilisateur et système. C'est ok localement (en utilisant set) mais pas en utilisantsetx
Jean-François Fabre
4

Dans mon cas, le problème était un autre fichier site.py, qui a été résolu plus tôt que celui de Python \ Lib, en raison du paramètre PATH.

Environnement: Windows 10 Professionnel, Python27.

Mon bureau a pgAdmin installé, qui contient le fichier C: \ Program Files (x86) \ pgAdmin \ venv \ Lib \ site.py. Comme la variable d'environnement PATH avait la maison de pdAdmin plus tôt que Python (apparemment une mauvaise idée en premier lieu), le site.py de pgAdmin a été trouvé en premier.

Tout ce que j'avais à faire pour résoudre le problème était de déplacer la maison de pgAdmin plus tard que Python, dans PATH

Ivan C
la source
3

Pour moi, cela s'est produit parce que j'avais 2 versions de python installées - python 27 et python 3.3. Ces deux dossiers avaient un jeu de variables de chemin et il y avait donc ce problème. Pour résoudre ce problème, j'ai déplacé python27 dans le dossier temporaire, car j'étais d'accord avec python 3.3. Vérifiez donc les variables d'environnement comme PATH, PYTHONHOME car cela peut être un problème. Merci.

kinshuk4
la source
1

Si quelqu'un constate que cela ne fonctionne toujours pas sous des utilisateurs non administrateurs:

Exemple d'erreur:

ImportError: No module named iso8601

vous devez définir l'option '--always-unzip' pour easy_install:

easy_install --always-unzip python-keystoneclient

Il décompressera vos fichiers d'oeuf et permettra à l'importation de les trouver.

Noma4i
la source
1

J'ai rencontré le même problème ImportError: No module named sitelors de l'installation de python 2.7.11

Au départ, j'avais Python2.5 et le chemin PYTHONHOME était défini sur Python2.5. Je l'ai renommé C:\Python27\et cela a résolu le problème.

Débattre
la source
0

Vous pouvez essayer le programme d' installation Open Source Active Python qui est un programme d' installation Python bien fait pour Windows. Il vous suffit de désinstaller votre version et de l'installer ...

philnext
la source
7
Le programme d'installation de python.org est très bien
David Heffernan
J'ai installé Active Python sur mon ordinateur portable, et cela s'est très bien installé. Mais cela ne fonctionne pas sur mon PC, j'obtiens toujours la même erreur
Mimminito
0

J'ai voté la réponse de slckin. Mon problème était que j'étais réfléchi et j'ai ajouté des guillemets doubles autour des chemins. J'ai supprimé les guillemets doubles dans les trois variables: PYTHONHOME, PYTHONPATH et PATH. Notez qu'il s'agissait d'un fichier cmd ou bat pour configurer l'environnement pour d'autres outils. Cependant, les guillemets doubles peuvent être utiles dans un paramètre d'icône. Dactylographie

ensemble

a révélé que les guillemets étaient dans le chemin et non supprimés comme prévu. J'ai également court-circuité le PATH pour qu'il contienne moins de 256 caractères.

Greg
la source
-1

J'ai une application qui s'appuie fortement sur Python et je me suis tenue à jour avec python 2.7.x à mesure que de nouvelles versions sont publiées. Tout va bien jusqu'au 2.7.11 quand j'ai eu la même No module named siteerreur " ". J'ai mis PYTHONHOME sur c:\Python27et ça marche. Mais le mystère demeure pourquoi cela est maintenant nécessaire alors que ce n'était pas avec les versions précédentes. Et, si nécessaire, pourquoi le programme d'installation ne définit-il pas cette variable?

Dave Lawrence
la source
-1

J'ai eu le même problème. Ma solution était de réparer l'installation de Python. (C'était une nouvelle installation donc je ne m'attendais pas à un problème mais maintenant il est résolu.)

Pour réparer (Windows 7):

  1. allez dans Panneau de configuration -> Programmes -> Programmes et fonctionnalités
  2. cliquez sur la version Python installée, puis appuyez sur Désinstaller / Modifier.
  3. suivez les instructions pour réparer l'installation.
Réintégrer Monica - Au revoir SE
la source
-3

Installez yaml depuis la page d'accueil de PyYAML: http://www.pyyaml.org/wiki/PyYAML

Sélectionnez la version appropriée pour votre système d'exploitation et Python.

CLead1000
la source