我如何 运行 从虚拟环境中全局安装 Jupyter?

How do I run globally installed Jupyter from within virtual environments?

我正在尝试 运行 Jupyter notebooks 在虚拟环境中使用全局安装的 Jupyter 版本(使用 virtualenvwrapper,因为我想管理已安装软件包的版本)。而且我也不会用Anaconda.

问题是当我从 virtualenv 中 运行 jupyter notebook 时,它找不到安装在 env 中的包,它只能找到全局安装的包。

如何设置 Jupyter 来检查安装在虚拟环境中而不是全局环境中的包?

这是我在 运行 which pythonwhich jupyter:

时得到的结果

全球:

which python  >>> /usr/local/bin/python
which jupyter >>> /usr/local/bin/jupyter

从 virtualenv 中:

which python  >>> /Users/brianclifton/.virtualenvs/test/bin/python
which jupyter >>> /usr/local/bin/jupyter

运行ning jupyter notebook 来自 virtualenv:

which python  >>> /usr/local/bin/python
which jupyter >>> /usr/local/bin/jupyter

此外,这是我的 .bash_profile:

export VISUAL=vim
export EDITOR="$VISUAL"

export PS1="\[\[\e[38;5;94m\][\u] \[\e[38;5;240m\]\w:\[\e[m\] $(__git_ps1 '(%s)')$ "
export CLICOLOR=1
export LSCOLORS=ExFxBxDxCxegedabagacad
export PATH=/usr/local/bin/python:/usr/local/bin:$PATH

alias ls='ls -GFh'
alias pserv="python -m SimpleHTTPServer"
alias ipynb="jupyter notebook"

export WORKON_HOME=/Users/brianclifton/.virtualenvs
export PROJECT_HOME=/Users/brianclifton/dev
source /usr/local/bin/virtualenvwrapper.sh

if [ -f $(brew --prefix)/etc/bash_completion ]; then
    . $(brew --prefix)/etc/bash_completion
fi

alias branch='git rev-parse --abbrev-ref HEAD'

function frameworkpython {
   if [[ ! -z "$VIRTUAL_ENV" ]]; then
      PYTHONHOME=$VIRTUAL_ENV /usr/local/bin/python "$@"
   else
      /usr/local/bin/python "$@"
   fi
}

一种可能的解决方案是将 virutalenv 的 bin 目录添加到您的路径前。这样 jupyter 就会找到 virtualenv 的库。您可以在激活环境后通过 运行 export PATH:`which python`:$PATH 来执行此操作。别名很容易。

但是,更好的解决方案可能是将此行添加到 postactivate hook/script。要找到此脚本的位置,请在激活 virtualenvwrapper 并编辑 $WORKON_HOME/<virtualenv_name>/bin/postactivate 后执行 ls $WORKON_HOME

来自virtualenv doc

的另一个解决方案
workon test
pip install ipykernel
python -m ipykernel install --prefix=/usr/local --name test-kernel

然后当你从你的其他 virtualenv 运行 jupyter 时你的内核应该出现,并且所有安装在测试中的包都可以从它获得。如果您更喜欢按用户安装而不是系统范围安装,请根据文档更改前缀值