我试图让virtualenv[wrapper]
通过Cygwin在我的Windows机器上运行。根据以下指示,安装成功与easy_install
一起成功:http://www.doughellmann.com/docs/virtualenvwrapper/。
当我使用mkvirtualenv [name_of_vir_env]
时出现问题。我得到以下输出:
$ 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.
在testenv
目录中,没有bin
子目录,而只有Lib
和Scripts
。 Scripts
包含activate.bat
,它应该用于激活此特定环境,但如果我尝试通过bash
运行此操作,则会收到错误消息:
$ ./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 ('
我可以退出bash
并致电activate.bat
,这会改变到所需的环境。但是不在bash
我不能使用workon
命令或virtualenvwrapper_bashrc
中的任何其他命令。
如何让两者一起工作,即留在bash
,以便我可以使用virtualenvwrapper_bashrc
中的命令?
答案 0 :(得分:3)
我对virtualenvwrapper没有经验,但是经常使用virtualenv。我不认为activate.bat打算在cygwin下运行,它在常规Windows shell中运行时有效。我想如果你使用的是cygwin,你可能想要使用更像bin / activate(类似unix的OS版本)的东西。
bash中的cygwin环境可能与标准环境activate.bat期望运行完全不同,因此找到一个可以与bash一起使用的激活脚本(可能从unix版本中找到一个副本)可能会让你到达你可以在bash中运行你的virtualenv。
答案 1 :(得分:1)
答案 2 :(得分:1)
这对我有用:
https://bitbucket.org/cliffxuan/virtualenvwrapper-for-cygwin-windows-python
香草virtualenvwrapper
似乎不支持Cygwin环境。
但需要注意的是,如果将显式传递给Scripts
命令并且不使Cygwin隐式转换以python
开头的路径 - 本机Windows Python无法看到这些路径。
答案 3 :(得分:0)
我不知道virtualenv,但我看到了来自cygwin的经典混合路径语法问题:
你的字符串是:
D:\.virtualenvs/testenv/bin/predeactivate
但Cygwin将反斜杠解释为“。”的转义。人物,生产:
D:.virtualenvs/testenv/bin/postactivate
在您引用的错误文本中,显然是一个格式错误的路径。检查你的实际环境变量 - 它可能是DOS / Windows路径语法,而内部部分是cygwin / unix语法。
如果是这样,请尝试使用os.path.join将两个部分拼接在一起,看看是否从中获得了一致的语法。