web-dev-qa-db-fra.com

Mac - Python - erreur d'importation: "Aucun module nommé site"

Ce soir, j'essaie de faire installer le paquet appelé "requêtes" et j'ai commencé à tâtonner avec le terminal et je n'ai pas beaucoup d'intuition en ce qui concerne ce genre de chose.

L'ordinateur est un Mac mini, OSX version 10.9.4

Dans/Library/Python, j'ai 4 dossiers: 2.3 2.5 2.6 et 2.7.
Dans/Applications, j'ai "Python 2.7" et "Python 3.4"
Je peux ouvrir IDLE et taper 8 + 8 et j'obtiens 16 très bien.

Voici l'erreur que je reçois dans le terminal:

 Host-210-117:~ Mario$ python       
 ImportError: No module named site       

 Host-210-117:~ Mario$ pip       
 ImportError: No module named site      

Mon objectif est d'exécuter cette commande dans le terminal:

 pip install requests

Je crois que pip est déjà installé. Je lance le fichier "get-pip.py" dans IDLE et voici ce qu'il dit:

 Requirement already up-to-date: pip in /Library/Python/2.7/site-packages/pip-1.5.6-py2.7.Egg
 Cleaning up...

Cela peut avoir quelque chose à voir avec les chemins? J'apprécierais quelques conseils/astuces/conseils, merci!

Oh et juste un peu plus d'informations qui pourraient aider à résoudre cette question. Voici les premières lignes du programme que j'exécute:

 import base64
 import hmac
 import json
 import requests
 import time
 import urllib
 import os

Ce qui me donne cette erreur dans IDLE (donc je suppose qu'il importe ces premiers paquets sans problème?):

 >>> 

 Traceback (most recent call last):
   File "/Users/Mario/Desktop/pyak/pyak.py", line 4, in <module>
     import requests
 ImportError: No module named requests
 >>> 

***** Liste des chemins système:

sys.path ['/ Users/Mario/Desktop/pyak', '/ Users/Mario/Documents', '/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.Egg', ' /Library/Frameworks/Python.framework/Versions/2.7/lib/python27.Zip ',' /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 ',' /Library/Frameworks/Python.framework /Versions/2.7/lib/python2.7/plat-darwin ',' /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac ',' /Library/Frameworks/Python.framework /Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages ',' /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk ','/Library/Frameworks /Python.framework/Versions/2.7/lib/python2.7/lib-old ',' /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload ','/Library/Frameworks /Python.framework/Versions/2.7/lib/python2.7/site-packages ',' /Library/Python/2.7/site-packages ']

*** une autre mise à jour:

 Host-210-117:~ Mario$ which python      
 /Library/Frameworks/Python.framework/Versions/2.7/bin/python

*** un peu plus d'informations (est-ce censé se produire?)

 Host-210-117:~ Mario$ which pip       
 /usr/local/bin/pip        
 Host-210-117:~ Mario$ pip       
 ImportError: No module named site       

*** Après avoir changé .bashrc

.bashrc: voici ce que contient le fichier

export PATH = "$ PATH: $ HOME/.rvm/bin" # Ajouter RVM à PATH pour les scripts
alias python =/Library/Python/2.7/python

voici la sortie de l'exécution:

  pip install requests      

Host-210-117: ~ Mario $ pip demandes d'installation
Demandes de téléchargement/déballage
Téléchargement des requêtes-2.4.1-py2.py3-none-any.whl (458kB): 458kB téléchargés
Installation des packages collectés: demandes
Nettoyer...
Exception:
Traceback (dernier appel le plus récent):
Fichier "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.Egg/pip/basecommand.py", ligne 122, dans l'état principal = self.run (options, args)
Fichier "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.Egg/pip/commands/install.py", ligne 283, dans l'exécution require_set.install (install_options, global_options, root = options.root_path)
Fichier "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.Egg/pip/req.py", ligne 1435, dans install requirements.install (install_options, global_options, * args, ** kwargs)
Fichier "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.Egg/pip/req.py", ligne 671, dans install self.move_wheel_files (self.source_dir, root = root) Fichier "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.Egg/pip/req.py", ligne 901, dans move_wheel_files pycompile = self.pycompile,
Fichier "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.Egg/pip/wheel.py", ligne 215, dans le clobber move_wheel_files (source, lib_dir, True)
Fichier "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.Egg/pip/wheel.py", ligne 205, dans clobber os.makedirs (destdir)
Fichier "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", ligne 157, dans makedirs mkdir (nom, mode)
OSError: [Errno 13] Autorisation refusée: '/Library/Python/2.7/site-packages/requests'

Stockage du journal de débogage en cas d'échec dans /Users/Mario/Library/Logs/pip.log

10
user3728456

D'après ce que je peux vous dire, vous avez trois versions de Python sur votre système.

  • Celui fourni avec OSX /Library/Frameworks/Python.framework/Versions/2.7/
  • Python 2.7 de python.org /Library/Python/2.7/site-packages
  • Python 3.4 de python.org

pip est installé contre la version Python 2.7 que vous avez téléchargée (celle que vous voyez dans votre dossier Applications), malheureusement le Python par défaut pour votre Shell est celui qui est fourni avec OSX, et il n'y a pas de pip installé là-bas.

IDLE est également fourni avec le Python que vous avez téléchargé, c'est pourquoi il continue de vous dire que pip est installé, mais il ne fonctionne pas à partir du shell.

Puisque vous utilisez probablement le Python téléchargé depuis python.org comme votre "primaire" Python (après tout, c'est celui avec IDLE que vous utilisez) , vous devez définir votre environnement Shell pour qu'il pointe vers ceci Python par défaut.

La façon la plus simple de le faire est d'ajouter une variable dans .bashrc qui crée un alias python et le pointe vers le bon binaire. Pour ce faire, ajoutez cette ligne à /Users/yourusername/.bashrc - fichiers avec . sont masqués par défaut, vous devrez donc écrire le nom complet du fichier dans la ligne de commande pour l'ouvrir. Ajoutez la ligne suivante:

alias python=/Library/Python/2.7/python

Enregistrez le fichier, puis fermez toutes les fenêtres du terminal et rouvrez-le. Tapez maintenant pip et cela devrait fonctionner correctement, puis vous pourrez procéder à l'installation des requêtes.

Pour référence future, essayez de vous en tenir à une version de Python. Personnellement, j'ignore la version fournie et j'utilise celle de brew , mais vous pouvez vous en tenir à Python téléchargé depuis python.org.

4
Burhan Khalid

J'ai corrigé le mien avec:

brew reinstall python

Il a réparé tous mes chemins brisés. Je pense que je l'ai cassé avec un paquet de brew cassé qui avait une mauvaise dépendance de version python ou quelque chose comme ça.

2
Daantje

site.py est un module standard qui est exécuté par python par défaut. Il permet de modifier sys.path et d'exécuter du code avant que votre code ne commence à s'exécuter. Il devrait vivre dans la bibliothèque standard et peut difficilement être en quelque sorte absent. Cependant, vous pouvez désactiver l’importation automatique du module en passant le commutateur -S à python.

Quoi qu'il en soit, vous devriez en quelque sorte vérifier pourquoi le module ne peut pas être importé. Essayez d'examiner la liste sys.path.

0
newtover

Vous essayez d'installer le package dans '/Library/Python/2.7/site-packages/requests' mais cela nécessite des autorisations root pour ce faire. Cela devrait faire l'affaire:

$ Sudo pip install requests
0
Sanchay

J'ai rencontré la même question et les informations d'erreur sont les suivantes:

ModuleNotFoundError: No module named 'xxx'

et finalement résolu par

brew install python3

brew link python3

Sudo python3 -m pip install xxx
// or `Sudo python3 -m pip install -r requirements.txt`
0
tenado