web-dev-qa-db-fra.com

Pip Installer ne pas installer dans le bon répertoire?

Il semble que je n'arrive pas à utiliser correctement l'installation de pipo Sudo pour l'installer dans le répertoire suivant: 

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/

afin que je puisse ensuite importer le module en utilisant python 

J'ai couru 

Sudo pip install scikit-learn --upgrade

Résultat

Requirement already up-to-date: scikit-learn in /usr/local/lib/python2.7/site-packages
Cleaning up...

Cependant, ce n'est pas dans le bon répertoire

Comment faire pour que l'installation de Sudo pip soit installée dans le bon répertoire?

En plus, j'ai essayé 

Sudo pip installer Scrappy

Je reçois le message suivant 

new-Host-2:site-packages Chris$ Sudo pip install Scrapy
Password:
Requirement already satisfied (use --upgrade to upgrade): Scrapy in /usr/local/lib/python2.7/site-packages
Requirement already satisfied (use --upgrade to upgrade): Twisted>=10.0.0 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): w3lib>=1.8.0 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): queuelib in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): lxml in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): pyOpenSSL in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): cssselect>=0.9 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): six>=1.5.2 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): zope.interface>=3.6.0 in /usr/local/lib/python2.7/site-packages (from Twisted>=10.0.0->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): cryptography>=0.2.1 in /usr/local/lib/python2.7/site-packages (from pyOpenSSL->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): setuptools in /usr/local/lib/python2.7/site-packages (from zope.interface>=3.6.0->Twisted>=10.0.0->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): cffi>=0.8 in /usr/local/lib/python2.7/site-packages (from cryptography>=0.2.1->pyOpenSSL->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): pycparser in /usr/local/lib/python2.7/site-packages (from cffi>=0.8->cryptography>=0.2.1->pyOpenSSL->Scrapy)

Ces deux instances démontrent qu'il a été installé mais pas correctement. Par exemple, lorsque j'exécute l'importation suivante en python: 

import scrapy
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-6-51c73a18167b> in <module>()
----> 1 import scrapy

ImportError: No module named scrapy

J'ai essayé ce qui suit: 

Sudo ln -s /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/
22
Chris

Des commentaires à la question initiale, il semble que vous ayez plusieurs versions de Python installées, et que le pip va à la mauvaise version. 

Premièrement, pour savoir quelle version de Python vous utilisez, tapez simplement which python. Vous devriez soit voir: 

which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python

si vous utilisez la bonne version de python, ou: 

which python
/usr/bin/python

Si vous allez à la "mauvaise" version. Pour que pip passe à la bonne version, vous devez d’abord changer le chemin: 

 export PATH=/Library/Frameworks/Python.framework/Versions/2.7/bin/python:${PATH}

en tapant 'quel python' vous mènerait maintenant au bon résultat. Ensuite, installez pip (s'il n'est pas déjà installé pour cette installation de python). Enfin, utilisez-le. ça devrait aller maintenant. 

25
Roy2012

C'est ce qui a fonctionné pour moi sous Windows. La cause étant plusieurs installations de python

  1. chemin de mise à jour avec le python correct
  2. désinstaller pip en utilisant python -m pip uninstall pip setuptools
  3. redémarrer Windows n'a pas fonctionné jusqu'au redémarrage
4
Jabda

Virtualenv est votre ami

Même si vous souhaitez ajouter un package à votre installation principale, il est toujours préférable de le faire d'abord dans un environnement virtuel, afin de garantir la compatibilité avec vos autres packages. Toutefois, si vous vous familiarisez avec virtualenv, vous constaterez probablement qu’il n’ya vraiment aucune raison d’installer quoi que ce soit dans l’installation de base. 

2
Wyrmwood

1 - Quelque chose qui pourrait fonctionner

L’exécutable pip est en réalité un script Python.

Par défaut, il contient (sous Linux):

#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'pip==1.5.6','console_scripts','pip'
__requires__ = 'pip==1.5.6'
import sys
from pkg_resources import load_entry_point

if __== '__main__':
    sys.exit(
        load_entry_point('pip==1.5.6', 'console_scripts', 'pip')()
    )

Donc, si vous avez la même chose sous MacOS, pip utilisera toujours /usr/bin/python.

Mais c'est un défaut. Vous pouvez toujours fournir la version de python souhaitée en modifiant le fichier ou en utilisant python de manière explicite.

Si which python renvoie /usr/bin/python, une erreur s'est produite lors de l'installation de votre propre version. Si c'est /Library/Frameworks/Python.framework/Versions/2.7/bin/python, vous pouvez appeler directement:

Sudo python `which pip` install scikit-learn --upgrade

Cependant, il y a de fortes chances que cela ne fonctionne pas. La raison en est que Sudo réinitialise toutes vos variables d'environnement. Pour que cela fonctionne, le plus simple serait d'utiliser:

Sudo -E pip install scikit-learn --upgrade

ou 

Sudo -E python `which pip` install scikit-learn --upgrade

en fonction de votre configuration.

2 - Ce que vous devriez faire

pip n'a pas été pensé comme quelque chose que root devrait exécuter. Le meilleur moyen de l'utiliser consiste à installer une version python locale, non root. Vous devez simplement vous assurer que vous l'utilisez par défaut en configurant les variables d'environnement correctes (telles que PATH sous Linux), puis installez pip sans Sudo en utilisant cette version python.

Une méthode encore meilleure consiste à configurer virtualenvs à partir de votre installation racine.

De cette façon, vous pouvez installer/mettre à jour ce que vous voulez sans les privilèges root et ne plus jamais vous soucier de savoir pourquoi Sudo pip ne fonctionne pas. Vous éviteriez également de fournir des privilèges root à tout ce qui se trouve sur Pypi, ce qui garantirait que vous ne mélangez pas les bibliothèques système avec les vôtres.

2
user1940040

Je suis totalement d'accord avec les gars, il est préférable d'utiliser virtualenv pour pouvoir définir un environnement personnalisé pour chaque projet. Il est idéal pour la maintenance, car il s’agit d’un monde différent pour chaque projet et chaque mise à jour d’une application effectuée n’interférera pas avec d’autres projets. 

Ici vous pouvez trouver un résumé de virtualenv lié à l'installation et aux premières étapes. 

1
Emily
  1. télécharger pip sur https://pypi.python.org/pypi/pip (tar)
  2. décompresser le fichier tar
  3. cd dans le répertoire du fichier
  4. Sudo python2.7 setup.py install
0
salomeow

Vous pouvez simplement changer la ligne Shebang. Je le fais tout le temps sur de nouveaux systèmes. 

Si vous voulez que pip soit installé sur une version actuelle de Python, il suffit de mettre à jour la ligne Shebang avec la version correcte du chemin d'accès de pythons. 

Par exemple, pour changer pip (pas pip3) à installer sur Python 3:

#!/usr/bin/python

À:

#!/usr/bin/python3

Tout module que vous installez à l'aide de pip doit être installé sur Python et non sur Python. 

Ou vous pouvez simplement changer le chemin.

0
user9950741