anaconda或者miniconda,我个人比较喜欢后者conda create -n thelabconda install jupyterlabconda install jupyterlab-language-pack-zh-CN中文包conda install jedi-language-server pyright python-lsp-server texlab若干附加包,反正硬盘很便宜。执行jupyter lab --generate-config命令,生成~/.jupyter/jupyter_lab_config.py,对其进行编辑。文件内有很详细的解释,主要需要编辑的地方包括:
c.ServerApp.allow_remote_access = Truec.ServerApp.ip按实际需要改,比如用frp转发的话可以留默认值localhost,端口c.ServerApp.port按实际情况改;c.ServerApp.root_dir是网页可操作文件的根目录,当然别依赖这个保证安全;c.ServerApp.quit_button = Fasle避免手滑关闭服务;jupyter lab password设定密码,注意如果暴露公网,这玩意儿应该是很不安全的;因为jupyterlab是安装在conda环境中,从外面是不能直接调用的,必须先激活环境,这就给systemd调用造成了一点困难。
所以,先写一个简单的包装脚本,放在miniconda的安装目录下:
#!/bin/bash
rootDir=$(cd $(dirname $0); pwd)
source ${rootDir}/bin/activate thelab
jupyter lab
调用它就相当于激活后调用jupyter lab了。
说张话啦!
接下来,写如下service文件,放到/lib/systemd/system/jupyter-lab@.service文件:
[Unit]
Description=jupyter-lab
After=network.target
[Service]
Type=exec
ExecStart= /usr/bin/bash /home/path/miniconda/jupyterlabwrapper.bash
Restart=always
User=%i
[Install]
WantedBy=default.target
User=%i的作用是支持以用户身份运行服务,与上面文件名中的@配套。之后,执行:
sudo systemctl enable --now jupyter-lab@$USER
就会创建一个以你自己的用户名为后缀的服务。如果是多人服务器,那么各自执行systemctl enable --now jupyter-lab@$USER就会创建多个服务,当然每个人要自己配置端口和目录。
实际上写死自己的用户名估计也行。如果是那种只有root账户的精简vps把这一行删了也行。
然后,自己处理域名绑定,TLS一类的问题吧。
conda或者venv一类的优势是可以通过虚拟环境让多个开发环境独立——否则我们直接全局安装就行了,也不用折腾上面的jupyterlabwrapper.bash。
但要让jupyterlab把这个优势用起来,还是需要动一下手的。
假定我们想要安装一个名叫yiliangjiu的独立环境,可以这样,首先conda create -n yiliangjiu并激活、安装所有你想要独立的包,然后在这个环境内:
conda install ipykernel # 会安装一大堆东西,几乎是半个`jupyter`了,但这年头硬盘便宜嘛
ipython kernel install --user --name=yiliangjiu # 还有额外的 display name 选项迎合外观党,自己 ipython kernel install --help
然后,关闭所有页面,重启jupyter-lab服务,然后在打开网页就看到新的 kernel 了。
如果不想要这个环境了,不是在yiliangjiu环境下操作,而是要在jupyterlab所在的环境下操作:
jupyter kernelspec list # 查看和确认名称
jupyter kernelspec uninstall yiliangjiu # 完成删除,并且会显示储存这个配置文件的目录
(还没实践,回头补充)
结论是最好别移动。Windows没研究过,Linux下有大量脚本在安装的时候写死了路径,比如conda、pip这类命令其实全是脚本。
所以,卸了重装吧。
git clone https://github.com/esc/conda-zsh-completion ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/conda-zsh-completion
然后,编辑.zshrc:
找到plugins=(… conda-zsh-completion)(刚装好一般就一个git插件),把conda-zsh-completion加进去。
然后,找到关于source oh-my-zsh.sh的命令,在这一行之后加上:
autoload -U compinit && compinit
退出再进来或者source .zshrc就可以自动补全了。
::: important
但是,安装了这玩意儿之后,手敲conda install之后不要按Tab,因为它似乎会调用python联网查询可用的包,很慢还容易出错。
:::