在pycharm 2023.2.1中运行由R语言编写的ipynb文件

在pycharm 2023.2.1中运行由R语言编写的ipynb文件

背景与目标:

项目中包含由R语言编写的ipynb文件,希望能在pycharm中运行该ipynb文件。

最终实现情况:

未能直接在pycharm中运行该ipynb文件,但是替代的实现方法有:

①能够在网页端运行由R语言编写的ipynb文件。

②能够将该ipynb文件中的内容复制到一个R语言文件(以.R为后缀)中,然后在pycharm中直接运行该R语言文件。

一、安装jupyter

在pycharm中打开该项目,配置好项目的python interpreter,即python环境。

1、在该python环境中安装jupyter:

pip install jupyter

2、生成jupyter的配置文件jupyter_notebook_config.py

在anaconda的终端命令行中输入:

jupyter notebook --generate-config

即可生成配置文件。

如果是root用户,执行命令需要加上--allow-root选项,即:

jupyter notebook --generate-config --allow-root

3、生成密码

在打开jupyter notebook时需要使用密码。

在anaconda的终端命令行中输入:

jupyter notebook password

出现如下提示,在xxxx位置输入个人设置的密码即可:

Enter password: xxxx
Verify password: xxxx
[NotebookPasswordApp] Wrote hashed password to C:\Users\PC\...\jupyter_notebook_config.json

执行以上命令后,可以在C:\Users\PC\...\jupyter_notebook_config.json看到与输入密码对应的哈希字符串:

{
	"NotebookApp": {
		"password": "xxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
	}
}

4、将哈希密码添加到配置文件jupyter_notebook_config.py

在配置文件jupyter_notebook_config.py中添加如下代码:

# ip设置为*
c.NotebookApp.ip = '*'
# 密码设置为sha1
c.NotebookApp.password = u'sha1:xxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' # 'sha1:'后面的字符串即为jupyter_notebook_config.json中的哈希字符串
# 浏览器设置不打开
c.NotebookApp.open_browser = False
# 设置固定的接口
c.NotebookApp.port = 8889

另外,如果需要指定启动jupyter后jupyter notebook的工作目录,可以在此配置文件中添加如下代码:

# 设置工作目录
c.NotebookApp.notebook_dir = 'G:\....'

如果不指定启动jupyter后jupyter notebook的工作目录,在anaconda终端命令行启动jupyter时所在的目录路径即为启动jupyter后jupyter notebook的工作目录。

参考:

远程jupyter+pycharm配置 (一)之安装与使用技巧

配置jupyter notebook-----更改工作目录

二、启动jupyter

2.1 启动jupyter服务器

在anacodna终端命令行中激活安装了jupyter的虚拟环境,然后使用下方命令启动jupyter:

jupyter notebook

运行成功时,终端出现类似如下内容的响应:

[I 16:52:50.678 NotebookApp] Serving notebooks from local directory: G:\....
[I 16:52:50.678 NotebookApp] Jupyter Notebook 6.5.4 is running at:
[I 16:52:50.679 NotebookApp] http://....:8889/
[I 16:52:50.679 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

其中,G:\....指在步骤一中指定的工作目录路径(如果步骤一中没有指定,则会指向启动jupyter时所在的目录路径),http://....:8889/指用浏览器查看jupyter notebook的网址,将此网址复制到浏览器后输入密码(在步骤一中个人设置的密码,不是哈希字符串),即可看到工作目录路径下的文件列表。

2.2 在网页端运行ipynb文件

打开工作目录路径中的某个自己创建的ipynb文件,如果刚打开文件时,界面右上角显示“内核就绪“(一段时间后消失)、有下图所示的标志且文件中单元格的代码可以正常运行,则说明在网页中可以正常使用jupyter notebook运行ipynb文件。
在这里插入图片描述

若在网页端对ipynb文件进行了修改,保存后,pycharm中查看该文件可以发现该文件已同步修改。

环境信息:python==3.11.4, jupyter=1.0.0, ipykernel=6.19.2, tornado=6.4.1

2.3 在pycharm窗口直接运行ipynb文件?[未成功]

需要先复制网址到浏览器、在浏览器中运行ipynb文件不如在pycharm窗口中直接运行ipynb文件方便。但是目前试了很多方法,都无法在pycharm窗口中直接运行jupyter notebook,只能在网页端运行。

试过的方法包括直接使用managed server配置jupyter server,都遇到报错,未能解决。

2.3.1 直接使用managed server

若直接使用managed server,无法连接jupyter服务器,会出现如下报错信息,不懂是什么意思。

Connect to DESKTOP-xxxx:8889 [DESKTOP-xxxx/172.27.48.1, DESKTOP-xxxx/192.168.3.13, DESKTOP-xxxx/192.168.3.10, DESKTOP-xxxx/fe80:0:0:0:ea0f:7ecd:6717:1fb9%42, DESKTOP-xxxx/fe80:0:0:0:8fbf:8ab7:7778:7036%13, DESKTOP-xxxx/fe80:0:0:0:e19a:6625:31bc:f80c%12, DESKTOP-xxxx/fd62:fe1e:c324:8700:d01e:faeb:af2:c4a2, DESKTOP-xxxx/fd62:fe1e:c324:8700:7d0:ca8f:4bde:9c9a] failed: Connection refused: connect
2.3.2 配置jupyter server

参考远程jupyter+pycharm配置 (一)之安装与使用技巧,在配置jupyter servers时,不使用managed server、使用configured server,尝试输入的Jupyter Server URL有:

  • http://…:8889/(在2.1中得到)

  • http://…:8889?token=(”…“的内容写成了localhost或者127.0.01)

  • http://…:8889?token=xxxx(”…“的内容写成了localhost或者127.0.01)

  • http://…:8889/?token=xxxx(”…“的内容写成了localhost或者127.0.01)

点击Apply按钮后均得到Jupyter Server URL is malformed(格式不正确)的报错信息。文章Pycharm2023.1连接远程jupyter notebook遇到的问题的作者建议不要钻牛角尖。

经过多次尝试后,发现不管填写的Jupyter Server URL是什么,如果jupyter server还没有启动,这些URL都会被认为是”malformed“的。先在anaconda终端命令行中启动jupyter,再填写这个URL(写成http://....:8889(最后一个"/"可有可无;这个URL需要手动输入密码)或者http://....:8889?token=xxxx(这个URL不需要手动输入密码)),就不会再出现格式不正确的报错信息。

但是,配置完成jupyter server后,仍会弹出如下报错信息,暂时没找到解决方法。

Error with connection to Jupyter: server responded with 403 on Request(method=GET, uri=http://DESKTOP-IC2DEU6:8889/api/kernelspecs/, headers=[], body=null, redirectLimit=10, context=Context(mayInteractUi=true)). [200] was expected.

网上提到的解决方法有:

  • 使用其他版本的Pycharm

  • 修改tornado版本为5.1.1(对应的python版本也要修改,与5.1.1的tornado适配的python版本是3.7)(参考文章Pycharm无法使用jupyter

    创建一个新的python虚拟环境尝试后无效。默认安装的tornado版本>6,此时只降低tornado版本甚至会出现在网页端无法连接内核的问题。

    与5.1.1的tornado冲突的包有:terminado、notebook、jupyter-server、jupyter-client、ipykernal。感觉需要多个包版本协调才有可能克服这个问题,但是追溯起来有些复杂,暂时作罢。

    在这里插入图片描述

  • 修改tornado版本为4.5.3(问题同上)

  • 修改ipykernel版本为4.5.2(问题同上)

三、安装R和R内核

3.1 安装R

安装R的过程可参考文章如何在 Pycharm 中高效使用 R 语言 (图文详解)

3.2 安装IRkernel

安装R后,打开R console,R console窗口如下图所示。
在这里插入图片描述
1、在R console中输入下方命令,安装IRkernel:

install.packages('IRkernel')

等待一段时间即安装完成。最终提示下载的二进制程序包在C:\Users\PC\AppData\Local\Temp\RtmpMNCSMh\downloaded_packages

2、在R console中输入下方命令,在当前R安装中注册kernel:

IRkernel::installspec()

执行此命令后,会安装一个名为ir的内核。

3、在R console中输入下方命令,指定kernel安装范围为全系统(而不仅是当前用户):

IRkernel::installspec(user = FALSE)

4、在anaconda终端命令行中(启动任一环境均可)使用下方命令检查当前jupyter可使用的内核,检查内核安装是否成功:

jupyter kernelspec list

如果列出的Available kernels中出现ir(如果先前使用过python,列表中一般还会有python3)即说明R内核安装成功。

此时启动jupyter,在网页端打开工作目录中的某个R语言编写的ipynb文件,如果默认使用的还是python3的内核(看界面右上角可知使用的内核),可以点击"kernel"->”Change kernel“->"R"更换内核为R内核。

参考:juypyter notebook安装 R核(IRkernel)

四、在pycharm中运行R语言文件

4.1 安装R相关的插件

在Pycharm中点击"Files"->“Settings”->“Plugins”->“Marketplace”,在搜索栏中搜索安装插件“R language for Intellij”。
在这里插入图片描述
等待一段时间后即可安装完成。

4.2 编辑R的环境变量

在windows中搜索环境变量,点击“环境变量”,选中系统变量的中“Path”,点击“编辑” ->“新建” ,将R安装的路径(具体到bin文件夹,如G:\Software\R\R-4.4.1\bin)添加进去。

参考:pycharm实现R语言运行环境安装配置的实现步骤

4.3 在Pycharm中配置R解释器

在Pycharm中点击"Files"->“Settings”->“Project: xxxx”->“R Settings”,在Project R Interpreter处添加(Add)R解释器,选择4.2中配置的R安装路径下的R.exe,即G:\Software\R\R-4.4.1\bin\R.exe

此时出现提示:Unsupported R version: '4.4.1'. Do you want to continue?,点击继续,后续发现并不影响使用。

之后就可以在Pycharm中运行R语言程序了(虽然同样不能直接在Pycharm窗口中运行由R语言编写的ipynb文件,但是可以将其中的内容复制到R语言文件中运行)。

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值