virtualenv和workon命令 - bash脚本中的奇怪行为

时间:2014-08-12 17:26:24

标签: django bash virtualenv

我最近使用virtualenv 1.10,Python 3.2和Django 1.7开始了一个新项目。这是几个项目中的一个,其他项目都是virtualenv 1.10,Python 2.7和Django 1.6。

我构建了一个脚本,允许我将项目名称作为参数传递,激活虚拟环境,启动Apache和MySQL并运行Django开发服务器。

这个脚本运行良好,直到我添加了这个最近的虚拟环境和这个新项目的位。现在,当我输入命令时(在终端或启动脚本中):

workon new_project

我得到了这个输出:

user@host:~$ workon new_project
bash: cd: one_of_my_other_projects: No such file or directory
(new_project)user@host:~$

我应该注意脚本工作正常,workon命令也是如此;但cd命令与该特定参数一起运行有点奇怪(例如,one_of_my_other_projects

此外,在此脚本中,我使用别名(在.bash_profile中)来更改工作目录。他们有这种形式:

alias oproj "cd /path/to/django/project"

我认为,因为我使用source运行此启动脚本,可能是别名导致了问题(我通过virtualenvwrapper.sh阅读并得到了这可能是一个印象冲突)。所以我删除了别名,并在bash脚本中使用了字符串变量。这没有用,并给出了相同的结果。

我不确定发生了什么。我唯一真正的线索是这个问题只发生在这个新项目中,而且这个项目使用的是不同版本的Python和Django。

由于我对bash,Python等缺乏了解,我确定这是一些冲突。我真的不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

基于@that其他人的评论,我能够调试bash脚本并获得一些线索。事实证明,出于某种原因(可能是我在摆弄脚本或者出于其他原因),在虚拟环境中有一个名为.project的文件,其中包含字符串one_of_my_other_projects。我首先将其更改为new_project,但这只是cd进入该目录并导致路径问题。

我删除了文件(我的手指交叉)并且有效。

我发现问题的方法是调试ode显示virtualenv脚本在该文件上执行cat。不知道为什么,因为它似乎实际上没有完成任何有用的东西。一看到里面,就发现了我的问题。

如果@that其他人用他的评论回答这个问题,我很乐意接受。否则,这个答案将用于帮助其他有类似问题的人。

感谢。