Python VirtualNVRapper更改cd行为并使用mkproject

Python VirtualNVRapper更改cd行为并使用mkproject,python,bash,virtualenv,virtualenvwrapper,Python,Bash,Virtualenv,Virtualenvwrapper,我试图通过下面的说明,使用VirtualNVRapper更改cd的默认行为: 并将代码放在my.virtualenvs文件夹中以及postactivate和postdeactivate文件中 激活后: #!/bin/bash # This hook is sourced after every virtualenv is activated. cd () { if (( $# == 0 )) then builtin cd $VIRTUAL_ENV el

我试图通过下面的说明,使用VirtualNVRapper更改cd的默认行为:

并将代码放在my.virtualenvs文件夹中以及postactivate和postdeactivate文件中

激活后:

#!/bin/bash
# This hook is sourced after every virtualenv is activated.

cd () {
    if (( $# == 0 ))
    then
        builtin cd $VIRTUAL_ENV
    else
        builtin cd "$@"
    fi
}

cd
后停用:

#!/bin/bash
# This hook is sourced after every virtualenv is deactivated.

cd () {
    builtin cd "$@"
}
但是,它似乎工作不正常,现在当我使用
workon project
时,它不会自动cd到.project文件中列出的项目文件夹中(可以使用
mkproject
命令创建)


(请注意,如果相关的话,我使用的是zshell和prezto)

您发布的菜谱不应该做您期望的事情。它实际上做的是,每当您在终端中键入
cd
而没有任何路径时,它会导航到virtualenv根目录,而不是主文件夹

我建议您设置VirtualNVRapper项目,这样您就可以将您的代码库与virtualenv分开(使用需求文件代替可移植性!),即添加到shell文件中

PROJECT_HOME='path/to/your/projects/folder'
这样
mkproject
将为您创建一个
path/to/your/projects/folder/[PROJECT\u NAME]
文件夹,并且
workon
将自动cd插入其中

但是,如果您不想使用项目,您应该像这样更改激活后脚本,以实现您想要的:

cd $VIRTUAL_ENV

你发布的菜谱不应该达到你期望的效果。它实际上的作用是,每当你在终端中键入
cd
而没有任何路径时,它就会导航到virtualenv根目录,而不是主文件夹

我建议您设置VirtualNVRapper项目,这样您就可以将您的代码库与virtualenv分开(使用需求文件代替可移植性!),即添加到shell文件中

PROJECT_HOME='path/to/your/projects/folder'
这样
mkproject
将为您创建一个
path/to/your/projects/folder/[PROJECT\u NAME]
文件夹,并且
workon
将自动cd插入其中

但是,如果您不想使用项目,您应该像这样更改激活后脚本,以实现您想要的:

cd $VIRTUAL_ENV