【问题标题】:virtualenv and workon command - odd behavior in bash scriptvirtualenv 和 workon 命令 - bash 脚本中的奇怪行为
【发布时间】:2014-08-12 17:26:23
【问题描述】:

我最近使用 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 等方面的知识,我确定这是一些冲突。我真的不知道从哪里开始。

【问题讨论】:

  • 您可以运行set -x 以获取有关您的各种shell 函数和别名正在执行的内容的运行评论。也许它会让你对执行这张 cd 的内容有所了解。
  • 不熟悉这个命令。我会试一试,看看能不能让它给我看光。谢谢。
  • 您想将您的评论放在答案中以便我接受吗?它解决了我的问题...

标签: django bash virtualenv


【解决方案1】:

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

我删除了文件(交叉手指)并且它起作用了。

我发现问题的方式是调试 ode 显示 virtualenv 脚本对该文件执行了 cat 操作。不知道为什么,因为它似乎并没有真正完成任何有用的事情。一进去,我就发现了我的问题。

如果@那个其他人用他的评论回答了这个问题,我很乐意接受。否则,将提供此答案以帮助遇到类似问题的其他人。

谢谢。

【讨论】:

  • 我只会 +1 代替
  • 甜蜜 - 谢谢。这个调试技巧很棒。我有一种感觉,我将来会经常使用它......
猜你喜欢
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多