instalar entorno crear python macos virtualenv pip

python - entorno - instalación de pip en paquetes de sitio globales en lugar de virtualenv



virtualenv python 3 windows (18)

El uso de pip para instalar un paquete en virtualenv hace que el paquete se instale en la carpeta global de paquetes de sitio en lugar de en la carpeta virtualenv. Así es cómo configuro Python3 y virtualenv en OS X Mavericks (10.9.1):

Instalé python3 usando Homebrew:

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" brew install python3 --with-brewed-openssl

Cambió la variable $PATH en .bash_profile; agregué la siguiente línea:

export PATH=/usr/local/bin:$PATH

Ejecutando which python3 devuelve /usr/local/bin/python3 (después de reiniciar el shell).

Nota: which python3 todavía devuelve / usr/bin/python .

Virtualenv instalado usando pip3:

pip3 install virtualenv

A continuación, cree un nuevo virtualenv y actívelo:

virtualenv testpy3 -p python3 cd testpy3 source bin/activate

Nota: si no especifico -p python3, la pip faltará de la carpeta bin en el virtualenv.

Ejecutando which pip y which pip3 ambos devuelven la carpeta virtualenv:

/Users/kristof/VirtualEnvs/testpy3/bin/pip3

Ahora, cuando trato de instalar, por ejemplo, Markdown usando pip en el virtualenv activado, pip se instalará en la carpeta global de paquetes de sitio en lugar de en la carpeta de paquetes de sitio de virtualenv.

pip install markdown

La ejecución de la pip list vuelve:

Markdown (2.3.1) pip (1.4.1) setuptools (2.0.1) virtualenv (1.11)

Contenido de /Users/kristof/VirtualEnvs/testpy3/lib/python3.3/site-packages :

__pycache__/ _markerlib/ easy_install.py pip/ pip-1.5.dist-info/ pkg_resources.py setuptools/ setuptools-2.0.2.dist-info/

Contenido de /usr/local/lib/python3.3/site-packages :

Markdown-2.3.1-py3.3.egg-info/ __pycache__/ easy-install.pth markdown/ pip-1.4.1-py3.3.egg/ setuptools-2.0.1-py3.3.egg setuptools.pth virtualenv-1.11-py3.3.egg-info/ virtualenv.py virtualenv_support/

Como puede ver, la carpeta global de paquetes de sitio contiene Markdown, la carpeta virtualenv no.

Nota: antes tenía Python2 y Python3 instalados en una VM diferente (seguí these instrucciones) y tuve el mismo problema con Python3; Sin embargo, la instalación de paquetes en Virtualenv basada en Python2 funcionó perfectamente.

Cualquier consejo, pista, ... sería muy apreciado.


El mismo problema. Python3.5 y pip 8.0.2 instalados desde las rpm Linux.

No encontré una causa principal y no puedo dar una respuesta adecuada. Parece que hay múltiples causas posibles.

Sin embargo, espero poder ayudar a compartir mi observación y una solución alternativa.

  1. pyvenv con --system-site-packages

    • ./bin no contiene pip , pip está disponible en los paquetes del sitio del sistema
    • los paquetes están instalados globalmente ( ¿ERROR? )
  2. pyvenv sin --system-site-packages

    • pip se instala en ./bin , pero es una versión diferente (de ensurepip )
    • los paquetes se instalan dentro del entorno virtual ( OK )

pyvenv obvia para pyvenv con --system-site-packages :

  • crearlo sin la --system-site-packages
  • cambiar include-system-site-packages = false a true en el archivo pyvenv.cfg

Es curioso que hayas mencionado esto, solo tuve exactamente el mismo problema. Finalmente lo resolví, pero aún no estoy seguro de qué lo causó.

Intente verificar su bin/pip y bin/activate scripts. En bin/pip , mira el shebang. ¿Es correcto? Si no, corrígelo. Luego, en la línea ~ 42 en su bin/activate , verifique si su camino virtualenv es correcto. Se verá algo como esto

VIRTUAL_ENV="/Users/me/path/to/virtual/environment"

Si es incorrecto, corríjalo, deactivate , luego . bin/activate . bin/activate , y si nuestro problema mutuo tuviera la misma causa, debería funcionar. Si aún no lo hace, estás en el camino correcto, de todos modos. Pasé por la misma rutina de resolución de problemas que tú, which pip una y otra vez, siguiendo el seguimiento de la pila, etc.

Asegúrate de que

/Users/kristof/VirtualEnvs/testpy3/bin/pip3

es lo que quiere, y no se refiere a otro proyecto de prueba con un nombre similar (tuve ese problema y no tengo idea de cómo comenzó. Mi sospecha es que ejecuto múltiples virtualenvs al mismo tiempo).

Si nada de esto funciona, una solución temporal puede ser, como dijo Joe Holloway,

Simplemente ejecute la pipa del virtualenv con su ruta completa (es decir, no confíe en buscar en la ruta ejecutable) y ni siquiera necesita activar el entorno. Hará lo correcto.

Tal vez no es ideal, pero debería funcionar en un apuro.

Enlace a mi pregunta original:

VirtualEnv / Pip tratando de instalar paquetes globalmente


Estas son algunas prácticas que podrían evitar dolores de cabeza al usar entornos virtuales:

  • Crea una carpeta para tus proyectos.
  • Crea tus proyectos Virtualenv dentro de esta carpeta.
  • Después de activar el entorno de su proyecto, nunca use " sudo pip install package ".
  • Después de terminar su trabajo, siempre " desactive " su entorno.
  • Evite cambiar el nombre de su carpeta de proyecto.


Para una mejor representación de estas prácticas, aquí hay una simulación:


creando una carpeta para sus proyectos / entornos

$ mkdir venv

creando ambiente

$ cd venv/ $ virtualenv google_drive New python executable in google_drive/bin/python Installing setuptools, pip...done.

entorno activador

$ source google_drive/bin/activate

instalar paquetes

(google_drive) $ pip install PyDrive Downloading/unpacking PyDrive Downloading PyDrive-1.3.1-py2-none-any.whl ... ... ... Successfully installed PyDrive PyYAML google-api-python-client oauth2client six uritemplate httplib2 pyasn1 rsa pyasn1-modules Cleaning up...

paquete disponible dentro del entorno

(google_drive) $ python Python 2.7.6 (default, Oct 26 2016, 20:30:19) [GCC 4.8.4] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> >>> import pydrive.auth >>> >>> gdrive = pydrive.auth.GoogleAuth() >>>

desactivar el entorno

(google_drive) $ deactivate $

paquete NO DISPONIBLE fuera del entorno

(google_drive) $ python Python 2.7.6 (default, Oct 26 2016, 20:32:10) [GCC 4.8.4] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> >>> import pydrive.auth Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named pydrive.auth >>>

Notas:

¿Por qué no sudo?

Virtualenv crea un entorno completamente nuevo para usted, definiendo $ PATH y algunas otras variables y configuraciones. Cuando utiliza el paquete de instalación sudo pip , está ejecutando Virtualenv como root , escapando de todo el entorno que se creó y luego instalando el paquete en paquetes de sitio globales, y no dentro de la carpeta del proyecto donde tiene un entorno virtual, aunque han activado el ambiente.

Si cambia el nombre de la carpeta de su proyecto (como se menciona en la respuesta aceptada) ...

... tendrá que ajustar algunas variables de algunos archivos dentro del directorio bin de su proyecto.

Por ejemplo:

bin / pip, línea 1 (She Bang)

bin / activate, línea 42 (VIRTUAL_ENV)


Este problema se produce al crear una instancia de virtualenv y luego cambiar el nombre de la carpeta principal.


Esto me sucedió cuando creé el virtualenv en el lugar equivocado. Entonces pensé que podía mover el directorio a otra ubicación sin que importara. Importaba

mkdir ~/projects virtualenv myenv cd myenv git clone [my repository]

Oh, mierda, me olvidé de editar projects antes de crear el virtualenv y clonar el representante. Oh, bueno, soy demasiado vago para destruir y recrear. Simplemente moveré el directorio sin problemas.

cd ~ mv myenv projects cd projects/myenv/myrepo pip install -r requirements

No, quiere más permisos, ¿qué? ¡Pensé que era extraño, pero SUDO LE QUEDÓ! A continuación, instaló los paquetes en una ubicación global.

La lección que aprendí fue, simplemente elimine el directorio virtualenv. No lo muevas


Lo primero que debes comprobar es qué ubicación pip se está resolviendo:

which pip

si estás en un virtualenv, esperarías que esto te brinde algo como:

/path/to/virtualenv/.name_of_virtualenv/bin/pip

Sin embargo, es posible que se esté resolviendo en el pip de su sistema por algún motivo. Por ejemplo, puede ver esto desde dentro de su virtualenv (esto es malo):

/ usr / local / bin / pip (o cualquier cosa que no esté en su ruta virtualenv).

Para resolver esto, compruebe su pipconfig en:

~/.pipconf ~/.conf/pip /etc/pip.conf

y asegúrate de que no haya nada que esté forzando tu ruta de Python o tu ruta de pip (esto me solucionó).

Luego intente iniciar un nuevo terminal y reconstruir su virtualenv (eliminar y luego crearlo de nuevo)


Me encuentro con el mismo problema al instalar un paquete de Python desde dentro de un virtualenv. La causa raíz en mi caso fue diferente. Desde el virtualenv, estaba (por costumbre en Ubuntu), haciendo:

sudo easy_install -Z <package>

Esto causó que se ignorara el shebang bin / pip y usó el python no virtualenv de la raíz para instalarlo en los paquetes de sitio globales. Como tenemos un entorno virtual, debemos instalar el paquete sin "sudo"


Ninguna de las soluciones anteriores funcionó para mí.

Mi venv estaba activo. pip -V y which pip me dio la ruta virtualenv correcta, pero cuando pip install instalé paquetes -ed con venv activado, mi pip freeze permaneció vacía.

Todas las variables de entorno también fueron correctas.

Finalmente, cambié pip y eliminé virtualenv:

easy_install pip==7.0.2 pip install pip==10 sudo pip uninstall virtualenv

Reinstalar venv:

sudo pip install virtualenv

Crear venv:

python -m virtualenv venv_name_here

Y todos los paquetes instalados correctamente en mi venv de nuevo.


Nos encontramos con el mismo problema hoy. Simplemente reinstalé pip globalmente con sudo easy_install pip (OSX / Max), luego creé mi virtualenv nuevamente con sudo virtualenv nameOfVEnv . Luego, después de activar el nuevo virtualenv, el comando pip funcionó como se esperaba.

No creo que use sudo en la primera creación virtualenv y que puede haber sido la razón para no tener acceso a pip desde dentro del virtualenv, pude obtener acceso a pip2 antes de esta corrección, que era extraño.


Para mí, esto no fue un problema de pip o virtualenv. Fue un problema de pitón. Había establecido mi $ PYTHONPATH manualmente en ~ / .bash_profile (o ~ / .bashrc) después de seguir algún tutorial en línea. Esta $ PITHONPATH configurada manualmente estaba disponible en virtualenv, ya que probablemente debería permitirse.

Además add2virtualenv no estaba agregando la ruta de mi proyecto a mi $ PYTHONPATH por algún motivo dentro del virtualenv.

¡Solo algunos caminos de bifurcación para aquellos que aún podrían estar atrapados! ¡Aclamaciones!


También tuve este problema. Llamar a pip install <package_name> desde el directorio /bin dentro de mi entorno virtual Python 3.3 en Mavericks Mac provocó que el paquete Python se instalara en el directorio de paquetes de sitios globales de Python 2.7. Esto fue a pesar de que mi $ PATH comenzó con el directorio que contiene pip . Extraño. Esto no ocurre en CentOS. Para mí, la solución fue llamar pip3 lugar de pip . Cuando instalé pip en el entorno virtual mediante ez_setup , se instalaron tres ejecutables "pip" en el directorio /bin - pip , pip3 y pip3.3 . Curiosamente, los tres archivos fueron exactamente iguales. Llamar a pip3 install <package_name> hizo que el paquete de Python se instalara correctamente en el directorio local de paquetes de sitio. Llamar a pip con la ruta de acceso completa en el entorno virtual también funcionó correctamente. Me interesaría saber por qué mi Mac no está usando $ PATH de la manera que yo esperaría.


También tuve este problema. Llamar a sudo pip install provocó que los paquetes de Python se instalaran en el sitio global: los paquetes de los paquetes y la instalación de llamadas de pip install funcionó bien. Así que no use sudo en virtualenv.


También vale la pena comprobar que no modificó de alguna manera el camino hacia su virtualenv.

En ese caso, la primera línea en bin/pip (y el resto de los ejecutables) tendría una ruta incorrecta.

Puede editar estos archivos y corregir la ruta o eliminar e instalar nuevamente el virtualenv.


Tuve el mismo problema, lo resolví eliminando el directorio de venv y recreándolo.

deactivate (if venv is activated first deactivate it) rm -rf venv virtualenv -p python3 venv . ENV/bin/activate pip3 install -r requirements.txt

Ahora todo funciona como un encanto.


Tuve este problema Resultó que había un espacio en uno de los nombres de mi carpeta que causó el problema. Eliminé el espacio, lo eliminé y volví a instalar usando venv, y todo estuvo bien.


Tuve este problema después de instalar Divio: había cambiado mi PATH o mi entorno de alguna manera, ya que lanza una terminal.

La solución en este caso fue solo hacer source ~/.bash_profile que ya debería estar configurado para regresar a su estado original pyenv / pyenv-virtualenv.


Tuve un problema similar después de actualizar a pip==8.0.0 . Tuve que recurrir a la depuración de pip para rastrear el mal camino.

Resultó que mi directorio de perfil tenía un archivo de configuración de distutils con algunos valores de ruta vacíos. Esto causaba que todos los paquetes se instalaran en el mismo directorio raíz en lugar del entorno virtual apropiado (en mi caso /lib/site-packages ).

No estoy seguro de cómo llegó el archivo de configuración o cómo tenía valores vacíos, pero comenzó después de actualizar pip.

En caso de que alguien más tropiece con este mismo problema, simplemente eliminando el archivo ~/.pydistutils.cfg (o eliminando la ruta de configuración vacía) solucionó el problema en mi entorno porque pip volvió a la configuración distribuida predeterminada.


Para Python 3ers

Intenta actualizar Tuve exactamente el mismo problema e intenté la respuesta de Chases, pero no tuve éxito. La forma más rápida de refactorizar esto es actualizar su versión de Python Minor / Patch si es posible. Noté que estaba ejecutando 3.5.1 y actualicé a 3.5.2. Pyvenv una vez más funciona.