Pregunta corta
- ¿Cuál es la forma correcta de instalar
pip
,virtualenv
ydistribute
?
Antecedentes
En mi respuesta a la pregunta SO 4314376 , recomendé usar ez_setup
para que luego pueda instalar pip
y de la virtualenv
siguiente manera:
curl -O http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
sudo easy_install pip
sudo pip install virtualenv
Originalmente extraje estas instrucciones de la publicación del blog de Jesse Noller. ¿Quieres usar Python en la Mac? . Me gusta la idea de mantener un directorio global de paquetes de sitio limpio, por lo que los únicos otros paquetes que instalo son virtualenvwrapper
y distribute
. (Recientemente agregué distribute
a mi caja de herramientas debido a este anuncio de servicio público de Python . Para instalar estos dos paquetes, utilicé:
sudo pip install virtualenvwrapper
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
No más herramientas de instalación y fácil instalación
Para seguir realmente ese anuncio de servicio público de Python , en una nueva instalación de Python, haría lo siguiente:
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
sudo easy_install pip
sudo pip install virtualenv
sudo pip install virtualenvwrapper
Reprimenda de glifo
En un comentario a mi respuesta a la pregunta 4314376 de SO, el usuario de SO Glyph declaró:
NO. NUNCA hagas
sudo python setup.py install
lo que sea. Escriba un ~ / .pydistutils.cfg que ponga su instalación de pip en ~ / .local o algo así. Especialmente los archivos nombradosez_setup.py
tienden a succionar versiones más nuevas de cosas como setuptools y easy_install, que potencialmente pueden romper otras cosas en su sistema operativo.
De vuelta a la pregunta corta
Entonces la respuesta de Glyph me lleva a mi pregunta original:
- ¿Cuál es la forma correcta de instalar
pip
,virtualenv
ydistribute
?
fuente
python distribute_setup.py
seguido deeasy_install pip
yvirtualenv --distribute venv
? (ver python-guide.readthedocs.org/en/latest/starting/install/… ), y si es así, ¿por qué?sudo apt-get install python-{pip,virtualenv}
?pip
,virtualenv
y el PSA Python.http://python-distribute.org/distribute_setup.py
redirige a 404 :(Respuestas:
Puede hacer esto sin instalar nada en Python.
No necesitas sudo ni ningún privilegio.
No necesita editar ningún archivo.
Instale virtualenv en un entorno virtual de arranque. Use ese entorno virtual para crear más. Como virtualenv se entrega con pip y distribuir, obtienes todo desde una instalación.
Aquí hay un ejemplo en bash:
Ahora puede usar su entorno "bootstrap" para crear más:
¡Vuélvete loco!
Nota
Esto supone que no está utilizando una versión realmente antigua de virtualenv. Las versiones anteriores requerían las banderas
--no-site-packges
(y dependiendo de la versión de Python--distribute
). Ahora puede crear su entorno de arranque con solopython virtualenv.py path-to-bootstrap
opython3 virtualenv.py path-to-bootstrap
.fuente
python virtualenv.py TARGET_DIRECTORY
hace lo mismo.virtualenv
no necesita las opciones '--no-site-packages --distribute'.--system-site-packages
Podría ser necesario lo contrariocurl -Lo virtualenv-tmp.tar.gz 'https://github.com/pypa/virtualenv/tarball/master'
virtualenvwrapper
? Los documentos advierten específicamente que no lo instalen en un virtualenv (aunque parece funcionar ).Creo que Glifo significa hacer algo como esto:
~/.local
, si aún no existe.~/.bashrc
, asegúrese de que~/.local/bin
esté encendidoPATH
y que~/.local
esté encendidoPYTHONPATH
.Crear un archivo
~/.pydistutils.cfg
que contengaEs un archivo estándar de formato ConfigParser.
Descargar
distribute_setup.py
y ejecutarpython distribute_setup.py
(nosudo
). Si se queja de unsite-packages
directorio no existente , créelo manualmente:mkdir -p ~ / .local / lib / python2.7 / site-packages /
Ejecute
which easy_install
para verificar que proviene de~/.local/bin
pip install virtualenv
pip install virtualenvwrapper
~/.virtualenvs
En
~/.bashrc
agregarEso es todo, no se usa
sudo
en absoluto y su entorno Python está en~/.local
, completamente separado del Python del sistema operativo. Descargo de responsabilidad: no estoy seguro de cuán compatiblevirtualenvwrapper
es en este escenario, no pude probarlo en mi sistema :-)fuente
easy_install pip
paso entre 5 y 6.Si sigue los pasos recomendados en varios tutoriales que vinculé en esta respuesta , puede obtener el efecto deseado sin los pasos "manuales" algo complicados en las respuestas de Walker y Vinay. Si estás en Ubuntu:
El equivalente se logra en OS X utilizando homebrew para instalar python (más detalles aquí ).
Con
pip
instalado, puede usarlo para obtener los paquetes restantes (puede omitirsudo
en OS X, ya que está utilizando su instalación local de Python).(estos son los únicos paquetes que necesita instalar a nivel mundial y dudo que choque con cualquier nivel de sistema del sistema operativo. Si desea estar súper seguro, puede mantener las versiones de la distribución
sudo apt-get install virtualenvwrapper
)Nota: en Ubuntu 14.04 recibo algunos errores con la instalación de pip , así que uso
pip3 install virtualenv virtualenvwrapper
y agregoVIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
a mi.bashrc/.zshrc
archivo.Luego anexas a tu
.bashrc
archivoy la fuente
Esto es básicamente eso. Ahora la única decisión es si desea crear un virtualenv para incluir paquetes a nivel de sistema
donde los paquetes del sistema existentes no tienen que reinstalarse, se vinculan simbólicamente a las versiones del intérprete del sistema. Nota: aún puede instalar nuevos paquetes y actualizar los paquetes incluidos incluidos desde el sistema sin sudo. Lo probé y funciona sin interrupciones del intérprete del sistema.
La alternativa, si desea un entorno completamente separado, es
o dado que esta es la opción predeterminada, simplemente
El resultado es que tiene un nuevo virtualenv donde puede instalar de forma libre y sin problemas sus paquetes favoritos
fuente
export WORKON_HOME="$HOME/.virtualenvs"
?brew install python
extrae pip + setuptools). Este enfoque funciona bien para mí. Además, centrarse en pip parece ser el camino futuro en el empaquetado de Python también.WORKON_HOME
Por defecto~/.virtualenvs
, sí. Hay una línea en/usr/local/bin/virtualenvwrapper.sh
ese conjuntoworkon_home_dir="$HOME/.virtualenvs"
if [ "$workon_home_dir" = "" ]
.pip install virtualenv virtualenv-wrapper
línea conpip install --upgrade distribute
el virtualenv activado en el que luego instalé pyopencl. También agreguéexport PROJECT_HOME="$HOME/src"
a mi bashrc para habilitar lamkproject
herramienta genial venv.Python 3.4 en adelante
Python 3.3 agrega el módulo venv , y Python 3.4 agrega el módulo surepip . Esto hace que el pip de arranque sea tan fácil como:
Tal vez precedido por un llamado
venv
a hacerlo dentro de un entorno virtual.El pip garantizado se describe en PEP 453 .
fuente
En Ubuntu:
sudo apt-get install python-virtualenv
El paquete
python-pip
es una dependencia, por lo que también se instalará.fuente
pip
, preferiblemente en unvirtualenv
, y nunca usarsudo
para ninguno de ellospip
veces tienen errores importantes, por lo que a menudo termino usando elget-pip.py
proporcionado en python.org.Hice este procedimiento para que lo usemos en el trabajo.
Puntos clave para la seguridad mental:
fuente
Actualización: a partir de julio de 2013, este proyecto ya no se mantiene. El autor sugiere usar pyenv . (pyenv no tiene soporte incorporado para virtualenv, pero juega bien con él).
Pythonbrew es un administrador de versiones para python y viene con soporte para virtualenv.
Después de instalar pythonbrew y una versión de python usando venvs es realmente fácil:
fuente
pyenv
, que funciona bien.No hay ningún problema para hacer la instalación de sudo python setup.py, si está seguro de que es lo que quiere hacer.
La diferencia es que utilizará el directorio de paquetes del sitio de su sistema operativo como destino para copiar los archivos .py.
por lo tanto, si desea que se pueda acceder a pip en todo el mundo, ese es probablemente el camino a seguir. No digo que otras formas sean malas, pero esto probablemente sea lo suficientemente justo.
fuente
pip freeze
me dejó casi congelado: la lista de paquetes que se instalaron en todo el sistema era demasiado larga. Desde entonces, recomiendo utilizar la instalación del paquete de Python "no sudo" y "no os-wide".Instala ActivePython . Incluye pip, virtualenv y Distribute.
fuente
Me encontré con el mismo problema recientemente. Me estoy volviendo más parcial a la mentalidad de "usar siempre un virtualenv", por lo que mi problema fue instalar virtualenv con pip sin instalar la distribución en mi directorio global o de usuario de paquetes de sitio. Para hacer esto, descargué manualmente distribuir, pip y virtualenv, y para cada uno ejecuté "python setup.py install --prefix ~ / .local / python-private" (con una configuración temporal de PYTHONPATH = ~ / .local / python-private) para que los scripts de configuración puedan encontrar distribuir). Moví el script virtualenv a otro directorio que tengo en mi RUTA y lo edité para que los módulos de distribución y virtualenv se puedan encontrar en sys.path. Tada: No instalé nada en / usr, / usr / local o mi directorio de paquetes de sitio de usuario, pero puedo ejecutar virtualenv en cualquier lugar, y en ese virtualenv obtengo pip.
fuente
He tenido varios problemas (ver más abajo) al instalar módulos SSL actualizados, incluso dentro de un virtualenv, además de las versiones anteriores de Python proporcionadas por el sistema operativo, por lo que ahora uso
pyenv
.pyenv hace que sea muy fácil instalar una nueva versión de Python y es compatible con virtualenvs. Comenzar es mucho más fácil que las recetas para virtualenv enumeradas en otras respuestas:
brew install pyenv
y en Linux, use pyenv-installerEsto funciona muy bien para aislar la versión "nueva Python" y virtualenv del sistema Python. Debido a que puede usar fácilmente un Python más reciente (posterior a 2.7.9), los módulos SSL ya están actualizados y, por supuesto, como cualquier configuración moderna virtualenv, está aislado de los módulos Python del sistema.
Un par de buenos tutoriales:
pyenv global 3.6.1
(global para el usuario actual) opyenv local 2.7.13
(local para el directorio actual).El
pyenv-virtualenv
complemento ahora está integrado: escribapyenv commands | grep virtualenv
para verificar. Para empezar, no usaría el complemento pyenv-virtualenvwrapper: vea cómo se lleva a cabo con pyenv-virtualenv, que está más integrado en pyenv, ya que esto cubre la mayor parte de lo que hace virtualenvwrapper.pyenv
está modeladorbenv
(una buena herramienta para cambiar la versión de Ruby) y su única dependencia es bash.pyvenv
, que es un equivalente virtualenv que es parte de las versiones recientes de Python 3, y no maneja el cambio de versión de PythonAdvertencias
Dos advertencias sobre pyenv:
dash
, que está/bin/sh
en Ubuntu o Debian.bash --login
Utilizando un terminal), que no siempre es fácil de lograr con herramientas de automatización como Ansible .Por lo tanto, pyenv es el mejor para uso interactivo y menos bueno para servidores de secuencias de comandos.
Problemas del módulo SSL
Una razón para usar
pyenv
es que a menudo hay problemas con la actualización de los módulos SSL de Python cuando se usan versiones anteriores de Python proporcionadas por el sistema:fuente
Puede hacer esto sin instalar nada en Python.
No necesitas sudo ni ningún privilegio.
No necesita encontrar la última versión de un
virtualenv
archivo tarNo necesita editar la información de la versión en un script bash para mantener las cosas actualizadas.
No es necesario
curl
/wget
otar
instalado, nipip
oeasy_install
esto funciona tanto para 2.7 como para 3.X
Guarde lo siguiente en
/tmp/initvenv.py
:de la importación futura print_function
y úsalo como
por ejemplo (si realmente necesita la
distribute
capa de compatibilidad parasetuptools
)Tenga en cuenta que, con versiones anteriores de Python, esto podría darle
InsecurePlatformWarning
s¹.Una vez que tenga su virtualenv (nombre, por ejemplo
venv
), puede configurar otro virtualenv utilizando elvirtualenv
recién instalado:virtualenvwrapper
Recomiendo echar un vistazo a virtualenvwrapper también, después de una configuración única:
y activación (se puede hacer desde su script de inicio de sesión):
puedes hacer cosas como:
¹ No he encontrado una manera de suprimir la advertencia. Podría resolverse en
pip
y / orequest
, pero los desarrolladores se señalan entre sí como la causa. Recibí la recomendación, a menudo no realista, de actualizar la versión de Python que estaba usando a la última versión. Estoy seguro de que esto se rompería, por ejemplo, mi instalación de Linux Mint 17. Afortunadamente,pip
almacena en caché los paquetes, por lo que la Advertencia se realiza solo una vez por instalación de paquete.fuente
InsecurePlatformWarning
(es decir, si Python es anterior a la versión 2.7.9) puede repararse instalando paquetes adicionales pyopenssl, pyasn1, ndg-httpsclient desde PyPI. (Es compatible con SSL, certificados de decodificación, https a través de PyOpenSSL). Sin los protocolos correctos, realmente no es lo suficientemente seguro como para descargar y ejecutar ningún código.Hay buenas instrucciones en el sitio oficial de Virtualenv. https://pypi.python.org/pypi/virtualenv
Básicamente lo que hice, se instalo
pip
consudo easy_install pip
, a continuación, utilizasudo pip install virtualenv
luego creó un ambiente con:virtualenv my_env
(nombre que lo que quiere), después de que lo hice:virtualenv --distribute my_env
; que instalódistribute
ypip
en mi virtualenv.Nuevamente, siga las instrucciones en la
virtualenv
página.Una especie de molestia, viniendo de Ruby; P
fuente
Aquí hay una buena manera de instalar virtualenvwrapper (actualización de esto ).
Descargue virtualenv-1.11.4 (puede encontrar lo último aquí ), descomprímalo, ábralo
terminal
Eso es todo, ahora puedes usar
mkvirtualenv env1
,lsvirtualenv
etc.Nota: puede eliminar
virtualenv-1.11.4
yvirtualenv-1.11.4.zip
de las carpetas de descargas.fuente
La buena noticia es que si ha instalado python3.4, pyvenv ya está instalado. Por lo que sólo
Ahora, en este entorno virtual, puede usar pip para instalar módulos para este proyecto.
Deja este entorno virtual, solo
fuente