如何优雅地使用Pycharm在本地调试运行服务器上的Python程序?

前言

本地没有GPU的我只能用服务器跑Python程序,但是无法直接调试导致我每次只好先从本地复制到服务器,再手动在终端输入“python run.py”,然后开始祈祷……

那么有没有办法可以直接在服务器端调试呢?还真有,下面我就给大家总结一下如何在本地使用Pycharm和Jupyter Notebook调试服务器的Python程序

本地使用Pycharm调试

对于从Github上克隆的项目和需要阅读源码的项目来讲,使用Pycharm可以极大的方便我们进行学习和编程。

如果使用Pycharm,只需要在本地进行设置。

下面进入教程部分:

  1. 首先打开Pycharm 2020.3版本,选择Tools -> Deployment -> Configuration,跳转到Deployment窗口。在这里插入图片描述

  2. 点击Deployment界面左上角“加号”,添加 SFTP,自定义一个Name(最好是服务器的地址或者地点),点击OK。在这里插入图片描述

  3. 下面点击SSH configuration后的三个点,进入SSH Configuration界面,然后点击加号,添加服务器的Host、Port、Username、Password,然后Test Connection,如果你看到Connect Successfully,表示服务器链接成功。如果不成功,请检查服务器是否开启SSH服务。链接成功后,点击OK。
    点击三个点

    在这里插入图片描述

  4. 回到Deployment界面,设置Root path(一般服务器是多人使用,每个人有一个个人目录);也可以点击后面的“Autodetect”。
    在这里插入图片描述

  5. 然后点击Mapping选项卡,Local path表示本地的项目目录,Deployment path表示服务器的Root path下的具体项目文件夹。这两个目录下的文件会进行同步,而且本地调试也是调试该目录下的文件。然后点击OK。(Excluded Paths选项卡,可以设置不想同步的目录。)在这里插入图片描述

  6. 设置自动同步本地和服务器的文件夹:Tools -> Deployment -> Automatic Upload。

  7. 设置好了服务器连接和文件夹的同步,最关键的是我们要用的服务器上的Python解释器,在Pycharm中进入File -> Setting -> Project -> Project Interpreter,然后点击小齿轮 -> Add。
    在这里插入图片描述
    在这里插入图片描述

  8. 然后选择SSH Interpreter,选择Existing server configuration,选择刚才创建的的服务器。然后选择Previous,选择服务器上的Python解释器,如果你的服务器下有Conda环境,请到Conda的安装目录下envs目录下找到自己所需环境的Python解释器,然后点击OK。查看你的Pycharm右下角,如果显示的Python解释器为服务器上的解释器,那么就可以在Pycharm上使用服务器的Python解释器调试了!在这里插入图片描述

本地使用Jupyter Notebook调试

对于一些数据分析类的项目,需要实时查看输出结果,使用Jupyter Notebook是最好不过的了。

如果使用Jupyter Notebook,那么本地和服务器端都需要进行修改。

下面进入教程部分:

1 服务器终端或者命令行

强烈建议使用Conda的虚拟环境,如果大家需要教程可以留言给我。

  1. 先安装 Jupyter notebook

    $ conda intall jupyter
    
  2. 然后设置Jupyter服务器端的密码

    $ jupyter notebook password
    

    输入密码,这里要记住该密码,因为本地访问服务器的Jupyter时需要用这个密码。

  3. 然后设置SSH,这个设置目的是保证通信安全。

    $ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout my_key.key -out mycert.pem
    

    然后会让你输入country name等等内容是用来生成密钥的,不填也可。

    请注意,my_key.key和mycert.pem都会保存在当前目录下。

  4. .jupyter文件夹下找到jupyter_notebook_config.py,填入my_key.keymycert.pem的路径,以及jupyter_notebook_config.json文件中的密码hash串。

    $ vim ~/.jupyter/jupyter_notebook_config.py
    

    使用Vim打开jupyter_notebook_config.py,可以用 :wq 是保存并退出,:/XXX 可以快速查找 XXX。下面是修改后的内容。

    # Set options for certfile, ip, password, and toggle off
    # browser auto-opening
    c.NotebookApp.certfile = u'/absolute/path/to/your/certificate/mycert.pem'
    c.NotebookApp.keyfile = u'/absolute/path/to/your/certifi`在这里插入代码片`cate/mykey.key'
    # Set ip to '*' to bind on all interfaces (ips) for the public server
    c.NotebookApp.ip = '*'
    c.NotebookApp.password = u'sha1:bcd259ccf...<your hashed password here>'
    c.NotebookApp.open_browser = False
    
    # It is a good idea to set a known, fixed port for server access
    c.NotebookApp.port = 8888
    
  5. 然后给Jupyter notebook配置上面生成的签名。

    $ jupyter notebook --certfile=mycert.pem --keyfile mykey.key
    

    打印出了本地访问Jupyter notebook的IP和端口,默认是[I 11:20:02.NotebookApp] https://test-desktop:8888/

2 本地

本地浏览器输入https://服务器IP:8888就可以访问啦,然后提示你输入的密码也是之前第2步设置过了!

参考感谢 🤞

[1] https://zhuanlan.zhihu.com/p/38330654
[2] https://www.cnblogs.com/thousfeet/p/10647102.html
[3] https://blog.csdn.net/bryant_meng/article/details/78570164

谢谢你的浏览!😀

  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值