How do I get virtualenvwrapper and cygwin to co-operate?

cygwin, python, virtualenv

Solution

I'm not experienced with virtualenvwrapper, but do use virtualenv regularly. I don't think the activate.bat is intended to be run under cygwin, it works when run in the regular windows shell. I think if you are using cygwin, you might want to use something more like bin/activate(the version for unix-like OS's).

The cygwin environment within bash could be drastically different from the standard environment activate.bat expects to run in, so finding an activate script that would work with bash(perhaps find a copy from a unix version) would probably get you to where you can run your virtualenv within bash.

Problem

I am trying to get `virtualenv[wrapper]` to work on my Windows machine through Cygwin. The install is successful, together with `easy_install`, based on these directions: http://www.doughellmann.com/docs/virtualenvwrapper/. The problem comes in when I use the `mkvirtualenv [name_of_vir_env]`. I get the following output: ``` $ 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. ``` Inside the `testenv` directory, there is no `bin` subdirectory, rather only `Lib` and `Scripts`. `Scripts` contains `activate.bat` which is supposed to be used to activate this particular environment, however if I try to run this out through `bash` I get an 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 (' ``` I can exit `bash` and call `activate.bat` and this changes to the desired environment. But then not being in `bash` I cannot use the `workon` command, or any other in `virtualenvwrapper_bashrc`. How can I get the two to work together, that is, stay in `bash` so I can use the commands in `virtualenvwrapper_bashrc`?

Original source