Parece que no puedo usar sudo pip install correctamente para que se instale en el siguiente directorio:

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

Para poder importar el módulo usando python

He corrido

sudo pip install scikit-learn --upgrade

Resultado

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

Sin embargo, no está en el directorio correcto

¿Cómo consigo sudo pip install para instalar en el directorio correcto?

Además, he intentado

Sudo pip install Scrapy

Me sale el siguiente mensaje

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)

Ambas instancias demuestran que se ha instalado pero no correctamente. Por ejemplo, cuando ejecuto la siguiente importación en python:

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

ImportError: No module named scrapy

He probado lo siguiente:

sudo ln -s /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/
31
Chris 1 sep. 2014 a las 18:19

8 respuestas

La mejor respuesta

De los comentarios a la pregunta original, parece que tiene varias versiones de Python instaladas, y ese pip simplemente va a la versión incorrecta.

Primero, para saber qué versión de Python está utilizando, simplemente escriba which python. Deberías ver:

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

Si vas a la versión correcta de python, o:

which python
/usr/bin/python

Si vas a la versión 'incorrecta'. Para hacer que pip vaya a la versión correcta, primero debe cambiar la ruta:

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

Escribiendo 'which python' ahora te llevaría al resultado correcto. A continuación, instale pip (si aún no está instalado para esta instalación de python). Finalmente, úsalo. deberías estar bien ahora.

29
Roy2012 26 sep. 2014 a las 20:55

Virtualenv es tu amiga

Incluso si desea agregar un paquete a su instalación principal, lo mejor es hacerlo primero en un entorno virtual, para garantizar la compatibilidad con sus otros paquetes. Sin embargo, si se familiariza con virtualenv, probablemente encontrará que realmente no hay razón para instalar nada en su instalación base.

3
Wyrmwood 3 abr. 2017 a las 22:11

1 - Algo que podría funcionar

El ejecutable pip es en realidad un script de Python.

Por defecto contiene (en 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 __name__ == '__main__':
    sys.exit(
        load_entry_point('pip==1.5.6', 'console_scripts', 'pip')()
    )

Entonces, si tienes lo mismo en MacOS, pip siempre usaría /usr/bin/python.

Pero esto es un defecto. Todavía puede proporcionar la versión de python que desee editando el archivo o utilizando python explícitamente.

Si which python devuelve /usr/bin/python, entonces algo salió mal cuando instaló su propia versión. Si es /Library/Frameworks/Python.framework/Versions/2.7/bin/python, puede llamar directamente:

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

Sin embargo, hay muchas posibilidades de que no funcione. La razón es que sudo está restableciendo todas las variables de entorno. Para que funcione, lo más fácil sería usar:

sudo -E pip install scikit-learn --upgrade

O

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

Dependiendo de su configuración.

2 - Lo que debes hacer

pip no fue pensado como algo que root debería ejecutarse. La mejor manera de usarlo es instalar una versión local, no root, de Python. Solo tiene que asegurarse de usarlo de forma predeterminada configurando las variables de entorno correctas (como PATH en Linux) y luego instalar pip sin sudo usando esa versión de Python.

Una forma aún mejor sería configurar virtualenv s desde su instalación raíz.

De esta manera, puede instalar / actualizar lo que quiera sin privilegios de root y nunca más volver a preocuparse por qué sudo pip no funciona. También evitaría proporcionar privilegios de root a lo que sea que esté en Pypi y eso garantizaría que no mezcle libs del sistema con los suyos.

2
user1940040user1940040 17 sep. 2014 a las 14:53

Podrías cambiar la línea shebang. Hago esto todo el tiempo en nuevos sistemas.

Si desea instalar pip en una versión actual de Python instalada, simplemente actualice la línea shebang a la versión correcta de la ruta de Python.

Por ejemplo, para cambiar pip (no pip3) para instalar en Python 3:

#!/usr/bin/python

Para:

#!/usr/bin/python3

Cualquier módulo que instale usando pip debe instalarse en Python, no Python.

O simplemente podrías cambiar el camino.

0
Pearly Spencer 16 jun. 2018 a las 16:51

Estoy totalmente de acuerdo con los chicos, es mejor usar virtualenv para que pueda establecer un entorno personalizado para cada proyecto. Es ideal para el mantenimiento porque es como un mundo diferente para cada proyecto y cada actualización de una aplicación que realice no interferirá con otros proyectos.

Aquí puede encontrar un resumen de virtualenv relacionado con la instalación y los primeros pasos.

1
Emily 19 sep. 2014 a las 13:20

Asegúrese de que la versión de pip coincida con su versión de Python.

Para obtener su versión de Python use:

Python -V

Luego instale el pip correcto. Es posible que ya tenga intall en ese caso, intente usar:

Pip-2.5 instalar ...

Pip-2.7 instalar ...

O para aquellos de ustedes que usan macports, asegúrese de que su versión coincida con.

Port select --list pip

Luego cambie a la misma versión de Python que está utilizando.

Sudo port select --set pip pip27

Espero que esto ayude. Funciona de mi parte.

-1
Julian 5 ago. 2015 a las 06:17

Debe desinstalar el python existente y luego descargar una nueva versión.

-2
sivan.liao 11 ene. 2017 a las 10:24
  1. descargue pip en https://pypi.python.org/pypi/pip (tar)
  2. descomprimir el archivo tar
  3. cd al directorio del archivo
  4. sudo python2.7 setup.py install
0
salomeow 5 ene. 2017 a las 13:28