Pregunta corta
- ¿Cuál es la forma correcta de instalar
pip,virtualenvydistribute?
Antecedentes
En mi respuesta a la pregunta SO 4314376 , recomendé usar ez_setuppara que luego pueda instalar pipy de la virtualenvsiguiente 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 virtualenvwrappery distribute. (Recientemente agregué distributea 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 installlo que sea. Escriba un ~ / .pydistutils.cfg que ponga su instalación de pip en ~ / .local o algo así. Especialmente los archivos nombradosez_setup.pytienden 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,virtualenvydistribute?
fuente

python distribute_setup.pyseguido deeasy_install pipyvirtualenv --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,virtualenvy el PSA Python.http://python-distribute.org/distribute_setup.pyredirige 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-bootstrapopython3 virtualenv.py path-to-bootstrap.fuente
python virtualenv.py TARGET_DIRECTORYhace lo mismo.virtualenvno necesita las opciones '--no-site-packages --distribute'.--system-site-packagesPodrí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/binesté encendidoPATHy que~/.localesté encendidoPYTHONPATH.Crear un archivo
~/.pydistutils.cfgque contengaEs un archivo estándar de formato ConfigParser.
Descargar
distribute_setup.pyy ejecutarpython distribute_setup.py(nosudo). Si se queja de unsite-packagesdirectorio no existente , créelo manualmente:mkdir -p ~ / .local / lib / python2.7 / site-packages /
Ejecute
which easy_installpara verificar que proviene de~/.local/binpip install virtualenvpip install virtualenvwrapper~/.virtualenvsEn
~/.bashrcagregarEso es todo, no se usa
sudoen absoluto y su entorno Python está en~/.local, completamente separado del Python del sistema operativo. Descargo de responsabilidad: no estoy seguro de cuán compatiblevirtualenvwrapperes en este escenario, no pude probarlo en mi sistema :-)fuente
easy_install pippaso 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
pipinstalado, puede usarlo para obtener los paquetes restantes (puede omitirsudoen 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 virtualenvwrappery agregoVIRTUALENVWRAPPER_PYTHON=/usr/bin/python3a mi.bashrc/.zshrcarchivo.Luego anexas a tu
.bashrcarchivoy 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 pythonextrae 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_HOMEPor defecto~/.virtualenvs, sí. Hay una línea en/usr/local/bin/virtualenvwrapper.shese conjuntoworkon_home_dir="$HOME/.virtualenvs"if [ "$workon_home_dir" = "" ].pip install virtualenv virtualenv-wrapperlínea conpip install --upgrade distributeel virtualenv activado en el que luego instalé pyopencl. También agreguéexport PROJECT_HOME="$HOME/src"a mi bashrc para habilitar lamkprojectherramienta 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
venva hacerlo dentro de un entorno virtual.El pip garantizado se describe en PEP 453 .
fuente
En Ubuntu:
sudo apt-get install python-virtualenvEl paquete
python-pipes una dependencia, por lo que también se instalará.fuente
pip, preferiblemente en unvirtualenv, y nunca usarsudopara ninguno de ellospipveces tienen errores importantes, por lo que a menudo termino usando elget-pip.pyproporcionado 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 freezeme 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 pyenvy 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-virtualenvcomplemento ahora está integrado: escribapyenv commands | grep virtualenvpara 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.pyenvestá 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/shen Ubuntu o Debian.bash --loginUtilizando 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
pyenves 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
virtualenvarchivo tarNo necesita editar la información de la versión en un script bash para mantener las cosas actualizadas.
No es necesario
curl/wgetotarinstalado, nipipoeasy_installesto 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
distributecapa de compatibilidad parasetuptools)Tenga en cuenta que, con versiones anteriores de Python, esto podría darle
InsecurePlatformWarnings¹.Una vez que tenga su virtualenv (nombre, por ejemplo
venv), puede configurar otro virtualenv utilizando elvirtualenvrecié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
pipy / 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,pipalmacena 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
pipconsudo easy_install pip, a continuación, utilizasudo pip install virtualenvluego creó un ambiente con:virtualenv my_env(nombre que lo que quiere), después de que lo hice:virtualenv --distribute my_env; que instalódistributeypipen mi virtualenv.Nuevamente, siga las instrucciones en la
virtualenvpá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
terminalEso es todo, ahora puedes usar
mkvirtualenv env1,lsvirtualenvetc.Nota: puede eliminar
virtualenv-1.11.4yvirtualenv-1.11.4.zipde 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