Ubuntu 19.10 似乎有一个不太标准的 virtualenvwrapper 包,这给我带来了问题。但从包中安装 pip、virtualenv 和 virtualenvwrapper 似乎比污染 virtualenv 之外的全局环境更明智。
大多数说明 (例如)建议在.bashrc中添加以下内容:
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
但是,Ubuntu 安装virtualenvwrapper.sh
在/usr/share/virtualenvwrapper/
:
$ dpkg -L virtualenvwrapper
/.
/usr
/usr/share
/usr/share/bash-completion
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/virtualenvwrapper
/usr/share/doc
/usr/share/doc/virtualenvwrapper
/usr/share/doc/virtualenvwrapper/README.txt
/usr/share/doc/virtualenvwrapper/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/virtualenvwrapper.1.gz
/usr/share/virtualenvwrapper
/usr/share/virtualenvwrapper/virtualenvwrapper.sh
/usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh
/usr/share/doc/virtualenvwrapper/README.Debian
/usr/share/doc/virtualenvwrapper/changelog.Debian.gz
/usr/share/man/man1/add2virtualenv.1.gz
...
/usr/share/man/man1/workon.1.gz
好吧,我可以对其进行修补并从该位置获取源代码,但这README.Debian
意味着 bash-completion 应该会接收它:
与 /usr/share/doc/virtualenvwrapper/html/index.html 中的信息相反,此软件包将 virtualenvwrapper.sh 安装为 /usr/share/virtualenvwrapper/virtualenvwrapper.sh,而惰性版本将安装为 /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh。
如果您安装了 bash-completion 软件包并在 /etc/bash.bashrc 或 ~/.bashrc 中启用 bash 补全支持,则 Virtualenvwrapper 已启用。/etc/bash_completion.d/virtualenvwrapper 中的 bash 补全文件默认提供 virtualenvwrapper 的惰性版本,但可以配置为加载完整版本。
如果你只想使用 virtualenvwrapper 你可能只需添加
源 /usr/share/virtualenvwrapper/virtualenvwrapper.sh
到你的 ~/.bashrc 或 ~/.zshrc。
我的 .bashrc 似乎已经包含启用 bash 完成支持所需的信息:
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
我正在运行一个来自osboxes.org在 Windows 10 上的 VMWare Player 内。
答案1
bashvirtualenvwrapper
补全默认加载“惰性”版本的脚本,这意味着真正的包装器脚本不会在 shell 启动时加载;只有当需要使用时才会真正加载,例如在输入 时mkvirtualenv
spacetabtab。shell 启动时间更快,是的,但这种惰性加载可能会污染控制台输出,产生不利影响,因此要小心。