赞美Pycharm,并记录我踩过的所有坑

只有 Pycharm 的 Professional 版才支持 Jupyter Notebook,请注意版本


Pycharm的Professional版有官方学生免费:Free Educational Licenses - Community Support,在读书的同学请务必一试,亲测学信网下载个在读证明就行

Pycharm有着丝般顺滑的代码补全功能,能大大提升效率,作为IDE的各种高级功能(比如变量预览,代码调试)也非常棒!你的notebook文件还能很方便地和.py文件联动开发,体验远超Jupyter Notebook加插件,安利大家都试一试。

注:至2022年10月,Pycharm尚不支持直接在jupyter notebook的Markdown单元中粘贴图片,需要你手动写链接插入,这是我目前觉得它唯一逊色于Jupyter Notebook自带的那个浏览器IDE的功能

按教程走一遍配置好Pycharm应该不用半天,但我真诚推荐你选个很闲很有空的时间再去尝试把你的工作流迁移过来。因为更换IDE这事是有学习成本的,先拿无关紧要的小东西适应个半个月再开始用Pycharm编辑你学习/工作要用的项目会更好,不然一点小问题可能就很让人崩溃。这是个无责任教程,不包售后

预备步骤

环境:Win 10,Python 3.10,Anaconda 2022.05,Jupyter Notebook 6.4.12,Pycharm Professional 2022.1.4

在Pycharm中新建Python项目

jupyter notebook python版本 jupyter notebook in pycharm_jupyter

这里我使用的Python环境管理工具是Conda,安装了Anaconda的话应该会在”使用此工具新建环境这一栏“自动跳出来的,可以自己定义 

右键你的项目名,新建一个JupyterNotebook文件

jupyter notebook python版本 jupyter notebook in pycharm_pycharm_02

然后打开这个Notebook 文件(我随便起了个名叫abcd),看上方工具栏,有个托管的Jupyter服务器选项,点它,进去配置

jupyter notebook python版本 jupyter notebook in pycharm_jupyter_03

这里选配置的服务器

jupyter notebook python版本 jupyter notebook in pycharm_pycharm_04

这里要填你的Jupyter服务器链接,所以我们下一步去复制一个

连接你的Jupyter内核(服务器)

命令行输入,打开你的Jupyter内核(服务器)

jupyter notebook

这一步用Anaconda的话注意在Anaconda Prompt里输入

jupyter notebook python版本 jupyter notebook in pycharm_服务器_05

会有很多代码跳出来,不用管他,找红框的部分,两行链接随便选一个复制好,这是你的Jupyter服务器(内核)地址和token,粘贴进上一步的Pycharm设置框里

警告:这个命令行窗口一直到你今天保存完你写的所有东西,停止所有Jupyter Notebook的运行之前都不要关闭

你的Jupyter Notebook实质是运行在这个窗口里的,Pycharm只是提供了一个友好的代码编辑器界面和一些方便你编辑的功能。

(当然你如果真关了,看下面有办法)

p.s. 打开内核时同时跳出来的浏览器页面可以关掉的,不要紧

现在你的Pycharm应该长这个样子,点确定就行

jupyter notebook python版本 jupyter notebook in pycharm_命令行_06

以后每次新建项目都要新配置一次这个链接的哦

如果你关闭过Jupyter内核,再次运行配置过链接的项目,会让你输入一个令牌

jupyter notebook python版本 jupyter notebook in pycharm_jupyter_07

同样在命令行里复制粘贴就好,注意这次只要token=后面的内容 

jupyter notebook python版本 jupyter notebook in pycharm_jupyter_08

设置密码并保存让连接一劳永逸

这里改设置的时候,你的jupyter内核需要关闭,改完重启

命令行生成jupyter配置文件

Anaconda记得走Anaconda Prompt

jupyter notebook --generate-config

如果以前配置过的,不用新生成,注意不要覆盖掉了旧的,直接按下一步添加就行

命令行会自己输出生成的jupyter_notebook_config.py路径的,拿个记事本打开它

命令行生成你自定义的密码的哈希字符串

#进入Python解释器
python

from notebook.auth import passwd
passwd()

注意:这里输入密码的部分是不会显示的,盲打就行

应该长这样

jupyter notebook python版本 jupyter notebook in pycharm_pycharm_09

把生成的单引号里的东西复制出来,贴到jupyter_notebook_config.py文件如图箭头所示的位置

jupyter notebook python版本 jupyter notebook in pycharm_命令行_10

tips:可以按Ctrl+F搜索passwd快速定位

重启你的jupyter内核,然后打开你的Pycharm,还是运行一下文件,和之前一样的,Pycharm会问你要密码或者token

jupyter notebook python版本 jupyter notebook in pycharm_jupyter_07

这里输你刚才设的密码,然后选记住就能一劳永逸了

想切换Python环境

在Pycharm右下角,找到解释器设置

jupyter notebook python版本 jupyter notebook in pycharm_pycharm_12

后面根据你的环境管理工具不同步骤都不一样,这里只介绍一下Anaconda怎么用

选齿轮-添加

jupyter notebook python版本 jupyter notebook in pycharm_命令行_13

在左侧选conda

这里默认新环境,想新建一个的话很简单直接确定就行,不截图啦。 

下面我们来看怎么把Anaconda里已经建好的环境导入进来。

右边选现有环境,选路径… 

jupyter notebook python版本 jupyter notebook in pycharm_服务器_14

 按路径选你的Python解释器,我这里示例的环境名叫 dirtyenv

jupyter notebook python版本 jupyter notebook in pycharm_jupyter_15

点确定,这个环境就显示在你的Pycharm里了,你可以自由地在右下角进行切换

想切换Jupyer Notebook的环境

注意:Jupyter Notebook 里的代码运行在你的 Jupyter 内核里,用的是Jupyter内核正在使用的环境,和Pycharm里设置的python环境指的不是一件事!

p.s. 当然,你可以配置你的Jupyter内核让它和你的python用同一个环境

这里给环境安装ipykernel包的时候,你的jupyter内核需要关闭,改完重启

用命令行在你的conda里创建一个环境,切换到新环境,或者是直接切换到现有的环境,安装ipykernel

conda install ipykernel

安好之后,重启你的 Jupyter内核,在Pycharm里打开任意Jupyte Notebook 文件,找上方工具栏右侧的小三角

jupyter notebook python版本 jupyter notebook in pycharm_pycharm_16

鼠标移过去会有更多工具栏,选红框里点击下拉,你装过ipykernel了的环境应该会自动显示在这里,选择就可以自由切换了

jupyter notebook python版本 jupyter notebook in pycharm_pycharm_17

以后每次新建环境,这个新环境都要重新安装一次ipykernel包的哦

配置完成

让我们随便敲点啥试一下

jupyter notebook python版本 jupyter notebook in pycharm_pycharm_18

你成功了!Happy Coding!

用好Pycham的各项功能,推荐阅读:

Get started | PyCharm

Learn PyCharm

IDE里也有自带的入门教程,可以上手试一试 

jupyter notebook python版本 jupyter notebook in pycharm_服务器_19

一些疑难杂症

如果你的Notebook不能import同一个项目目录下的.py文件

在Notebook里添加当前项目路径到系统路径

# 添加项目路径到path
import sys

currentPath = "【你的项目路径】"
#print(currentPath)
sys.path.append(currentPath)

如果你的Notebook运行时不能实时反应import的.py文件的代码变化

特别是当你同时在.py文件里写写改改然后在Notebook里尝试运行它的时候

在Notebook里添加自动重新加载

%load_ext autoreload
%autoreload 2