如何利用virtualenv工具在JupyterHub上以非root权限创建基于Python3.6.6的虚拟环境?
Posted JasperGui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用virtualenv工具在JupyterHub上以非root权限创建基于Python3.6.6的虚拟环境?相关的知识,希望对你有一定的参考价值。
JupyterHub是支持多用户的 Jupyter Notebook 服务器,用于创建、管理、代理多个 Jupyter Notebook 实例,具有扩展性和可定制性。
在此服务器下,如果一个普通用户(不具有root权限且无法获得)想创建一个Python3.6的虚拟环境,而Ubuntu或者管理员配置的Python不是此版本,则普通用户在创建虚拟环境的时候需要先安装Python3.6,但是通用安装方法会用到如下命令来将 bin文件写入/usr目录下:
sudo make install
但这需要root权限,此时如果没有root权限则可能会安装失败,本文正是针对此问题提供一种解决方案。
本文假定的用户名为: jasper
首先,登录到Jupyter服务器,打开一个terminal,如下图所示:
然后,在terminal下分别执行如下步骤:
STEP 1 安装Python3.6.6(本文基于Ubuntu16.04.5)
# 从官网提取Python3.6.6的tgz压缩包
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
# 解压
tar -xzf Python-3.6.6.tgz
# 切换到Python目录
cd Python-3.6.6
# 新建一个文件夹来放安装后的Python3.6.6
mkdir -p /home/jasper/python3.6.6
# 修改配置文件来改变Python默认的安装位置
./configure --prefix="/home/jasper/python3.6.6" --enable-optimizations --with-ssl
make
make install
如果成功安装,在 /home/jasper/python3.6.6 应该就会有对应的bin文件夹
STEP 2 创建基于Python3.6.6的虚拟环境test_env
本文使用virtualenv包创建虚拟环境,如果没有安装,需要首先安装virtualenv:
pip install --user -U virtualenv
如果安装程序没有把virtualenv放入环境变量,则需要自己将其放入环境变量,方法是修改.bashrc文件:
vim ~/.bashrc
I # 进入编辑模式
# 在文件适当位置中添加如下语句
export PATH="/home/jasper/.local/bin:$PATH"
ESC # 退出编辑模式
:wq # 保存并退出vim
source ~/.bashrc # 重启修改后的配置文件
为了方便环境管理,需要为不同的虚拟环境创建不同的子文件夹:
mkdir virtual_env # 创建一个文件夹专门放置所有的虚拟环境
cd virtual_env
mkdir test_env # 我当前准备创建的虚拟环境
创建完必要的文件夹后,开始初始化该环境:
cd ~ # 调整到用户主目录 /home/jasper
# 开始创建虚拟环境并指定python版本为3.6.6
virtualenv -p /home/jasper//Python-3.6.6/bin/python3.6 test_env
# 激活该环境判断是否创建成功
source test_env/bin/activate
# 退出环境
deactivat
STEP 3 将创建好的虚拟环境test_env添加到Jupyter的Kernel当中
pip install --user -U ipykernel
ipython kernel install --user --name=test_env
然后reload你的Jupyter notebook,新建一个Python3的文件,在Kernel下点击Change kernel的下拉菜单中,应该可以看到我们刚建的test_env虚拟环境,如下图所示:
以上是关于如何利用virtualenv工具在JupyterHub上以非root权限创建基于Python3.6.6的虚拟环境?的主要内容,如果未能解决你的问题,请参考以下文章
利用virtualenv实现Python2和Python3共存,且ipython2和ipython3共存
windows 环境下如何使用virtualenv python环境管理工具
在windows环境下利用virtualenv搭建Python虚拟环境