创建 python 虚拟环境以及对应的 jupyter notebook kernel

为什么需要 python 虚拟环境

python 的版本和已安装的 package 一直是项目开发需要注意的问题。有些项目需要 python 2,有些必须用 python 3。一个项目中用到的 python package 版本跟其他项目可能还会有冲突。

为了解决这些问题,建议使用 python 虚拟环境。为每个项目创建一个独立的虚拟环境并安装各自需要的 package,项目之间互不干扰。创建虚拟环境可以用 virtualenv 方式,也可以用 conda,这里我们选用 virtualenv 方式。

如何创建 python 虚拟环境

一个好的习惯是将所有的 python 虚拟环境放在同一个文件夹下,便于管理。大体的路径如下:

home/user_name/pyenvs/project1
home/user_name/pyenvs/project2
home/user_name/pyenvs/project3
...

最简单的虚拟环境创建命令:

virtualenv  project1   

这里 project1 是要创建的虚拟环境的名字,默认是在当前路径下创建虚拟环境。
也可以指定某个具体的路径:

virtualenv ~/path/to/a/virturalEnv 

在创建虚拟环境时,如果提示找不到 virtualenv ,很可能系统中还没有安装 virtualenv,可以用下面的命令安装

sudo apt install virtualenv

如果要指定在虚拟环境中用某一版本的 python,可以用如下命令:

virtualenv -p python3 project1 

或者更加具体的指定 python 3 的版本,例如指定虚拟环境中用 python 3.6 版本:

virtualenv -p python3.6 project1

不过这里的前提是系统中确实存在 python3.6 版本。关于系统 python 版本的查看和设置可以参考我们之前的文章

上述命令会在当前目录下创建全新的 python 虚拟环境 project1。原本系统中的 python package 也不能被虚拟环境使用。如果希望新建的虚拟环境可以使用系统的 package,则在创建虚拟环境时添加参数 --system-site-packages

virtualenv  -p python3.6 --system-site-packages project1 

启动 python 某一虚拟环境(例如 project1)命令如下:

source  <path to the activate file in project1>

具体地,假设当前目录是在 project1 文件夹中,则用命令

source  bin/activate

总之,给出指向虚拟环境文件夹中 activate 文件的路径即可。

在 source 之后,会看到命令行开头多了虚拟环境的名字,这表明当前已处于虚拟环境中,此后安装的所有 python package 都被安装到了此虚拟环境中,与系统的主 python 环境无关,也与其他虚拟环境无关。安装 package 时也不需要 sudo 或者 --user 参数。

如果希望每次打开 terminal 就自动进入某个虚拟环境,可以将上述 source 命令放入 .bashrc 文件中。

要退出虚拟环境,可以在命令行中用如下命令:

deactivate

当不再需要某个虚拟环境时,直接删掉对应的虚拟环境文件夹即可。

如何将虚拟环境设置为 jupyter notebook 的 kernel

jupyter notebook 是一个非常流行的编程环境,很方便调试,也适合发布供其他人参考。可以简单地把 jupyter notebook 看作一个实验报告,里面可以有代码,试验结果图片,文档说明等。目前网上很多教程是用 jupyter notebook 的形式书写的。

在安装了虚拟环境之后,为了在 jupyter 中使用虚拟环境中的 module,我们需要设置与该虚拟环境对应的 jupyter kernel。只需要简单的两步,如下:

  1. source 进入要设置成 jupyter kernel 的虚拟环境,安装 ipykernel module
pip install ipykernel
  1. 添加虚拟环境对应的 kernel:
ipython kernel install --user --name=kernel_name_you_like

此后就可以在 jupyter 的 kernel 中选择此虚拟环境对应的 kernel了,虚拟环境中的 module 都可以被调用。

另外两个与 jupyter kernel 相关的常用命令是:

  • 查看当前已有的 jupyter kernel:
jupyter kernelspec list
  • 删除不再需要的 kernel:
jupyter kernelspec uninstall kernel_name
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345