2012-02-29 14 views
9

Tengo un virtualenv de Python (creado con virtualenvwerapper) en una cuenta de usuario. Me gustaría utilizarlo desde otra cuenta de usuario en el mismo host.Compartiendo entornos virtualenv de Python

¿Cómo puedo hacer esto? ¿Cómo puedo configurar entornos virtuales para que estén disponibles para cualquier usuario en el host? (Principalmente Linux/Debian pero también Mac OSX.)

Gracias.

Respuesta

5

Colóquelo en un directorio neutral para el usuario y hágalo legible por grupo.

Por ejemplo, para bibliotecas, uso /srv/http/share/ para compartir código entre aplicaciones web.

Puede usar /usr/local/share/ para las aplicaciones normales.

+0

Pero ¿cuál es la virtualenv/virtualenvwrapper sintaxis para utilizar ese directorio? Con virtualenvwrapper, el la línea de comandos << >> some_env workon busca un ambiente en el directorio .virtualenv del usuario. – chernevik

+0

Wh ¿A qué te refieres? Usas '. bin/activate' como de costumbre. – Flavius

+0

Lo siento, no lo sigo. Cuando cambio a un entorno, mi línea de comando es << workon some_env >> - No toco bin/activate. – chernevik

4

Tenía que hacer esto para mis compañeros de trabajo. El @Flavius ​​answer funcionó muy bien una vez que agregué algunos comandos para manejar virtualenvwrapper. Debes colocar tus venvs y tu carpeta de proyectos WORKON en un lugar que tú y tu jefe/amigo puedan encontrar y usar.

sudo mkdir -p /usr/local/share 
sudo mv ~/.virtualenvs /usr/local/share 
sudo mkdir -p /usr/src/venv/ 

Suponiendo que quieren todo el mundo en que la máquina sea capaz tanto de mkproject y workon:

chmod a+rwx /usr/local/share/.virtualenvs 
chmod a+rwx /usr/src/venv 

De lo contrario chown y chmod para satisfacer sus necesidades de seguridad.

Si tiene alguna ganchos o secuencias de comandos que esperan ~/.virtualenvs para estar en el lugar habitual, es mejor que un enlace simbólico que (tanto en su cuenta de usuario y de su amigo)

ln -s /usr/local/share/.virtualenvs ~/.virtualenvs 

Luego modificar (y el archivo de su amigo) .bashrc para que virtualenvwrapper sepa dónde movió las cosas. Su bashrc debe tener algo como esto:

export PROJECT_HOME="/usr/src/venv/" 
export WORKON_HOME="/usr/local/share/.virtualenvs" 

export USR_BIN=$(dirname $(which virtualenv)) 
if [ -f $USR_BIN/virtualenvwrapper.sh ]; then 
    source $USR_BIN/virtualenvwrapper.sh 
else 
    if [ -f /usr/bin/virtualenvwrapper.sh ]; then 
     source /usr/bin/local/virtualenvwrapper.sh 
    else 
     echo "Can't find a virtualenv wrapper installation" 
    fi 
fi 

Una vez que finalice la sesión y volver en (o simplemente source ~/.bashrc que debe ser bueno para ir con comandos como mkproject awesome_new_python_project y workon awesome_new_python_project

Como beneficio adicional, añadir ganchos a. cargar la carpeta del proyecto en sublime cada vez que su workon.

+0

Parece que no puedo hacer que funcione (no se puede encontrar un módulo al configurar como sugirió): ¿cuál es el papel de 'mkdir -p/usr/src/venv'-¿se usa ese dir para cualquier cosa? – pepe

Cuestiones relacionadas