2010-02-01 14 views
9

que estoy tratando de conseguir virtualenv[wrapper] a trabajar en mi máquina Windows a través de Cygwin. La instalación es exitosa, junto con easy_install, según estas instrucciones: http://www.doughellmann.com/docs/virtualenvwrapper/.¿Cómo hago para que virtualenvwrapper y cygwin cooperen?

El problema viene cuando se utiliza la mkvirtualenv [name_of_vir_env]. Me sale el siguiente resultado:

$ mkvirtualenv testenv 
New python executable in testenv\Scripts\python.exe 
Installing setuptools.................done. 
bash: D:\.virtualenvs/testenv/bin/postactivate: No such file or directory 
chmod: getting attributes of `D:\\.virtualenvs/testenv/bin/postactivate': No such file or directory 
bash: D:\.virtualenvs/testenv/bin/predeactivate: No such file or directory 
chmod: getting attributes of `D:\\.virtualenvs/testenv/bin/predeactivate': No such file or directory 
bash: D:\.virtualenvs/testenv/bin/postdeactivate: No such file or directory 
chmod: getting attributes of `D:\\.virtualenvs/testenv/bin/postdeactivate': No such file or directory 
ERROR: Environment 'D:\.virtualenvs/testenv' does not contain an activate script. 

Dentro del directorio testenv, no hay bin subdirectorio, sino sólo Lib y Scripts. Scripts contiene activate.bat que se supone que debe ser utilizado para activar este entorno particular, sin embargo si trato de ejecutar este a través de bash consigo un error:

$ ./activate.bat 
./activate.bat: line 1: @echo: command not found 
./activate.bat: line 4: syntax error near unexpected token `(' 
./activate.bat: line 4: `if not defined PROMPT (' 

puedo salir bash y llame activate.bat y esto cambia a la deseada ambiente. Pero luego no estar en bash No puedo usar el comando workon, o cualquier otro en virtualenvwrapper_bashrc.

¿Cómo puedo hacer que los dos trabajen juntos, es decir, quédense en bash para que pueda usar los comandos en virtualenvwrapper_bashrc?

Respuesta

0

no sé virtualenv, pero estoy viendo lo que parece ser un tema clásico mixta ruta sintaxis de cygwin:

Su cadena es:

D:\.virtualenvs/testenv/bin/predeactivate 

pero Cygwin está interpretando la barra invertida como un escape Para el "." carácter, produciendo:

D:.virtualenvs/testenv/bin/postactivate 

que está en el texto de error que está citando y es obviamente una ruta de acceso mal formada. Verifique su variable de entorno real, probablemente en la sintaxis de la ruta de DOS/Windows, mientras que la parte interna está en la sintaxis de cygwin/unix.

Si es así, trate de usar os.path.join para empalmar las dos partes juntas y ver si le da una sintaxis coherente de eso.

3

No tengo experiencia con virtualenvwrapper, pero utilizo virtualenv con regularidad. No creo que el activate.bat esté destinado a ejecutarse bajo cygwin, funciona cuando se ejecuta en el shell de windows normal. Creo que si está usando cygwin, es posible que desee usar algo más como bin/activate (la versión para sistemas operativos tipo Unix).

El entorno de cygwin dentro de bash podría ser drásticamente diferente del entorno estándar en el que activate.bat espera ejecutarse, por lo que encontrar un script de activación que funcione con bash (quizás encontrar una copia de una versión de Unix) probablemente te lleve a donde puedes ejecutar tu virtualenv dentro de bash.

+0

Tuve que usar. venv/scripts/activar – Jabez

1

Esto lo hizo por mí:

https://bitbucket.org/cliffxuan/virtualenvwrapper-for-cygwin-windows-python

La vainilla virtualenvwrapper no parece apoyar el medio ambiente Cygwin.

Una advertencia sin embargo, es que las secuencias de comandos ejecutables en el directorio Scripts del virtualenv sólo podrán ser ejecutadas si pasa explícitamente al comando python y no utiliza ~ o cualquier otra cosa que Cygwin implícitamente convierte una ruta que comienza con /cygdriv/c/... -la Windows nativo Python no puede ver esas rutas.

Cuestiones relacionadas