Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在my current bash中激活virtualenv(无子进程)_Bash_Virtualenv - Fatal编程技术网

在my current bash中激活virtualenv(无子进程)

在my current bash中激活virtualenv(无子进程),bash,virtualenv,Bash,Virtualenv,我想有一个通用的BASH脚本来激活我的虚拟脚本 给定文件夹中的环境 脚本应该能够从我拥有虚拟环境的任何文件夹中调用 如果没有虚拟环境,则应创建一个虚拟环境并安装pip要求 我无法在原始BASH中仅作为子进程运行激活(请参见--rcfile)。只是源代码-ing它不工作 这就是我目前的剧本: #!/bin/bash -e # BASH script to run virtual environment # Show errors set -x DIR_CURRENT="$PWD" DIR

我想有一个通用的BASH脚本来激活我的虚拟脚本 给定文件夹中的环境

  • 脚本应该能够从我拥有虚拟环境的任何文件夹中调用
  • 如果没有虚拟环境,则应创建一个虚拟环境并安装pip要求
我无法在原始BASH中仅作为子进程运行激活(请参见
--rcfile
)。只是
源代码
-ing它不工作

这就是我目前的剧本:

#!/bin/bash -e

# BASH script to run virtual environment

# Show errors
set -x

DIR_CURRENT="$PWD"
DIR_VIRTUAL_ENV="$PWD/venv"
FILE_PYTHON="/usr/bin/python2.7"
FILE_REQUIREMENTS="requirements.txt"
FILE_VIRTUAL_ACTIVATE_BASH="$DIR_VIRTUAL_ENV/bin/activate"

# CD to current folder
cd ${DIR_CURRENT}

echo DIR: $(pwd)

# Create the virtual environment if not existing
if [ ! -d ${DIR_VIRTUAL_ENV} ]; then
    virtualenv -p ${FILE_PYTHON} ${DIR_VIRTUAL_ENV}
    chmod a+x ${FILE_VIRTUAL_ACTIVATE_BASH}
    source ${FILE_VIRTUAL_ACTIVATE_BASH}
    pip install -r ${FILE_REQUIREMENTS}
fi

/bin/bash --rcfile "$FILE_VIRTUAL_ACTIVATE_BASH"

# Disable errors
set +x
我使用MacOSX10.10.5和Python2.7


可悲的是,这些问题无法回答我的问题。

首先,一个名为的项目已经很好地解决了您要做的事情


关于您的问题:使用函数而不是脚本。将其放入bashrc中,例如:

function enter_venv(){

    # BASH script to run virtual environment

    # Show errors
    set -x

    DIR_CURRENT="$PWD"
    DIR_VIRTUAL_ENV="$PWD/venv"
    FILE_PYTHON="/usr/bin/python2.7"
    FILE_REQUIREMENTS="requirements.txt"
    FILE_VIRTUAL_ACTIVATE_BASH="$DIR_VIRTUAL_ENV/bin/activate"

    # CD to current folder
    cd ${DIR_CURRENT}

    echo DIR: $(pwd)

    # Create the virtual environment if not existing
    if [ ! -d ${DIR_VIRTUAL_ENV} ]; then
        virtualenv -p ${FILE_PYTHON} ${DIR_VIRTUAL_ENV}
        chmod a+x ${FILE_VIRTUAL_ACTIVATE_BASH}
        source ${FILE_VIRTUAL_ACTIVATE_BASH}
        pip install -r ${FILE_REQUIREMENTS}
    fi

    /bin/bash --rcfile "$FILE_VIRTUAL_ACTIVATE_BASH"

    # Disable errors
    set +x
}
您可以这样称呼它:

enter_venv

谢谢,据我所知,
virtualenvwrapper
只是在全球范围内创建环境?它是否也会自动构建和激活它们?很遗憾,你发布的函数没有在我的“根”shell中运行,仍然在创建一个新的。VirtualEnvrapper可以做你想做的事情。只需(完整地)阅读文档。要使我上面的示例起作用,您需要启动一个新的终端/外壳。否则,您的bashrc将无法再次获取源代码。(请不要告诉我您将函数放在脚本中并执行了!)您是否也可以发布一个VirtualRapper示例?使用VirtualRapper:
mkvirtualenv-ppython2.7 NAME
。。从那时起,
workon NAME
。。您需要手动执行
pip安装-r requirements.txt
。确保按照手册中的说明正确安装了VirtualNVRapper谢谢。当我输入一个“现有”工作文件夹时,是否有自动运行的功能?