Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.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
Python 如何编辑.bashrc以使用virtualenvwrapper的workon命令_Python_Virtualenv - Fatal编程技术网

Python 如何编辑.bashrc以使用virtualenvwrapper的workon命令

Python 如何编辑.bashrc以使用virtualenvwrapper的workon命令,python,virtualenv,Python,Virtualenv,每次打开终端时,我都必须运行此命令 source $(which virtualenvwrapper.sh) 使用 workon myenv 我想知道我需要向.bashrc添加什么,这样我就可以立即使用workon命令, 之前未使用源代码 我正在使用Ubuntu 14.04,根据,您可以将以下内容添加到.bashrc: export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/Devel source /usr/local

每次打开终端时,我都必须运行此命令

source $(which virtualenvwrapper.sh)
使用

workon myenv
我想知道我需要向.bashrc添加什么,这样我就可以立即使用
workon
命令, 之前未使用
源代码

我正在使用Ubuntu 14.04,根据,您可以将以下内容添加到
.bashrc

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh

我个人喜欢它,因为它使shell启动速度更快。

我的.bash\u配置文件中有这一点,可以帮助在虚拟环境之间移动。它包括不必每次都获取shell脚本源代码所需的信息,但它还包括一种在您将cd刻录到目录中时自动“处理”环境的方法

如果你只有一个虚拟人,我不确定我是否明白虚拟人的意义

export WORKON_HOME=~/.virtualenvs
export PROJECT_HOME=~/Development/python
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

# Call virtualenvwrapper's "workon" if .venv exists.
# Source: https://gist.github.com/clneagu/7990272
# This is modified from--
# https://gist.github.com/cjerdonek/7583644, modified from
# http://justinlilly.com/python/virtualenv_wrapper_helper.html, linked from
# http://virtualenvwrapper.readthedocs.org/en/latest/tips.html
#automatically-run-workon-when-entering-a-directory
check_virtualenv() {
    if [ -e .venv ]; then
        env=`cat .venv`
        if [ "$env" != "${VIRTUAL_ENV##*/}" ]; then
            echo "Found .venv in directory. Calling: workon ${env}"
            workon $env
        fi
    fi
}
venv_cd () {
    builtin cd "$@" && check_virtualenv; ls -FGlAhp
}
# Call check_virtualenv in case opening directly into a directory (e.g
# when opening a new tab in Terminal.app).
check_virtualenv
alias cd="venv_cd"

我在
.bashrc
文件中使用它来自动
workon
最近激活的虚拟环境

if [ -f  /usr/local/bin/virtualenvwrapper.sh ]; then
  source /usr/local/bin/virtualenvwrapper.sh

  # Set up hooks to automatically enter last virtual env
  export LAST_VENV_FILE=${WORKON_HOME}/.last_virtual_env
  echo -e "#!/bin/bash\necho \$1 > $LAST_VENV_FILE" > $WORKON_HOME/preactivate
  echo -e "#!/bin/bash\necho '' > $LAST_VENV_FILE" > $WORKON_HOME/predeactivate
  chmod +x $WORKON_HOME/preactivate
  chmod +x $WORKON_HOME/predeactivate
  if [ -f  $LAST_VENV_FILE ]; then
    LAST_VENV=$(tail -n 1 $LAST_VENV_FILE)
    if [ ! -z $LAST_VENV ]; then
      # Automatically re-enter virtual environment
      workon $LAST_VENV
    fi
  fi
fi
修改
preactivate
deactivate
挂钩,以便在激活虚拟环境时,虚拟环境的名称转储到一个文件中,在禁用虚拟环境时,文件的内容被擦除。这与@Todd Vanyo的答案类似,但在激活/停用目录时有效,而不是在导航目录时有效。

N.b.
.sh
文件(例如,使用
pip安装