如果您使用的是 linux 并且 您宁愿完全避免使用 conda,并使用虚拟环境 (venvs) 来让 python 满意,并且您碰巧使用的是“旧”/LTS Debian基于操作系统,可能没有最新的nodejs:即Ubuntu 16.04 LTS,没有node,而是nodejs(node属于另一个包,'legacy nodejs'版本太旧了),然后继续阅读。
这设置起来有点复杂,但比 conda 更容易长期维护。 (您可以随时为新项目创建一个新的venv,而不会破坏您的旧项目)。
要点是:
- 使用 PPA 获取所需内容的新版本
- 使用 virtualenvwrapper,您可以:
- 使用最新的python3
- 避免弄乱您的“pip install”
- 避免混淆系统包管理器
- 还可以轻松地与使用不同版本 python 的人合作
- 遵循 python 最佳实践
- 很容易拥有不同的 venv,这些 venv 可能包含旧的或不兼容的 python 和 pip 包。
- 使用Nodejs binary distributions
- jupyterlab 小部件需要 node.js 版本“10.x”
- 允许使用系统的包管理器来保持 nodejs 的新鲜度
- 只要 LTS 存在,就会得到维护和使用
所以,所有实际步骤(这些都经过测试可在 Linux Mint 18.3 Sylvia 上运行,它基本上与 ubuntu xenial aka Ubuntu 16.04 LTS 兼容。差异主要出现在 nodejs 中,请阅读上面 github 链接中的自述文件以解决其他操作系统):
找一个管理员来做(或者如果你可以sudo,你自己做):
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install -y python3.8 python3.8-dev python3.8-distutils python3-pip python3-venv
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
然后,作为您自己的用户,您可以完成其余步骤:
pip3 install --user virtualenv virtualenvwrapper
mkdir ~/.envs
然后,您需要将以下内容添加到 .bashrc 的末尾:
export PATH=~/.local/bin:$PATH
export WORKON_HOME=~/.envs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source ~/.local/bin/virtualenvwrapper.sh
此时,创建一个新的 shell,您将能够运行其余的设置,实际安装 jupyterlab:
mkvirtualenv -p python3.8 jupenv
pip install jupyter matplotlib pandas ipympl tqdm
jupyter labextension install @jupyter-widgets/jupyterlab-manager
现在你已经完成了。
要打开/使用 jupyter,你需要(因为上面我称之为 jupenv 的 venv,你可以在 mkvirtualenv 行中随意命名):
workon jupenv
jupyter lab
否则,我将无休止地试图让 nodejs 与过时的 ubuntu 包一起工作。有时它会工作,重新启动几次,然后失败。其他时候它会一直给我同样缺失的小部件,或者有时是几行垃圾 js 代码。
Virtualenvs 非常值得使用,尤其是当您开始认真使用 python 并与可能使用不同版本/不同 pip 包集的其他人一起工作时。 VirtualEnvWrapper 让这一切变得非常轻松。
基本的一点是,你“pip install”的所有东西,甚至是 jupyter,最终都会被完全分开(并且与系统包分开),这让所有东西都能很好地工作。
有一些基本的注意事项:
- 不要在未进入 venv 的情况下运行
pip install ... 行
- 不要在 venv 中使用
pip3 代替 pip。
- 只使用
python 而不是python3 在其中运行。
- 不要使用
conda...!
- 请注意,您可以通过以下方式一次更新所有 virtualenvs:
allvirtualenv pip install -U pip
至于 nodejs 二进制分发包:强烈推荐它们支持您的特定操作系统。它们将是最新的,应该会带来最少的麻烦。