目录
- 前言
- 本地使用Pycharm调试
- 本地使用Jupyter Notebook调试
- 1 服务器终端或者命令行
- 2 本地
- 参考感谢 🤞
- 谢谢你的浏览!😀
前言
本地没有GPU的我只能用服务器跑Python程序,但是无法直接调试导致我每次只好先从本地复制到服务器,再手动在终端输入“python run.py”,然后开始祈祷……
那么有没有办法可以直接在服务器端调试呢?还真有,下面我就给大家总结一下如何在本地使用Pycharm和Jupyter Notebook调试服务器的Python程序。
本地使用Pycharm调试
对于从Github上克隆的项目和需要阅读源码的项目来讲,使用Pycharm可以极大的方便我们进行学习和编程。
如果使用Pycharm,只需要在本地进行设置。
下面进入教程部分:
- 首先打开Pycharm 2020.3版本,选择Tools -> Deployment -> Configuration,跳转到Deployment窗口。
- 点击Deployment界面左上角“加号”,添加 SFTP,自定义一个Name(最好是服务器的地址或者地点),点击OK。
- 下面点击SSH configuration后的三个点,进入SSH Configuration界面,然后点击加号,添加服务器的Host、Port、Username、Password,然后Test Connection,如果你看到Connect Successfully,表示服务器链接成功。如果不成功,请检查服务器是否开启SSH服务。链接成功后,点击OK。
- 回到Deployment界面,设置Root path(一般服务器是多人使用,每个人有一个个人目录);也可以点击后面的“Autodetect”。
- 然后点击Mapping选项卡,Local path表示本地的项目目录,Deployment path表示服务器的Root path下的具体项目文件夹。这两个目录下的文件会进行同步,而且本地调试也是调试该目录下的文件。然后点击OK。(Excluded Paths选项卡,可以设置不想同步的目录。)
- 设置自动同步本地和服务器的文件夹:Tools -> Deployment -> Automatic Upload。
- 设置好了服务器连接和文件夹的同步,最关键的是我们要用的服务器上的Python解释器,在Pycharm中进入File -> Setting -> Project -> Project Interpreter,然后点击小齿轮 -> Add。
- 然后选择SSH Interpreter,选择Existing server configuration,选择刚才创建的的服务器。然后选择Previous,选择服务器上的Python解释器,如果你的服务器下有Conda环境,请到Conda的安装目录下envs目录下找到自己所需环境的Python解释器,然后点击OK。查看你的Pycharm右下角,如果显示的Python解释器为服务器上的解释器,那么就可以在Pycharm上使用服务器的Python解释器调试了!
本地使用Jupyter Notebook调试
对于一些数据分析类的项目,需要实时查看输出结果,使用Jupyter Notebook是最好不过的了。
如果使用Jupyter Notebook,那么本地和服务器端都需要进行修改。
下面进入教程部分:
1 服务器终端或者命令行
强烈建议使用Conda的虚拟环境,如果大家需要教程可以留言给我。
- 先安装 Jupyter notebook
$ conda intall jupyter
- 然后设置Jupyter服务器端的密码
$ jupyter notebook password
输入密码,这里要记住该密码,因为本地访问服务器的Jupyter时需要用这个密码。
- 然后设置SSH,这个设置目的是保证通信安全。
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout my_key.key -out mycert.pem
然后会让你输入country name等等内容是用来生成密钥的,不填也可。
请注意,my_key.key和mycert.pem都会保存在当前目录下。
- 去
.jupyter
文件夹下找到jupyter_notebook_config.
py,填入my_key.key
和mycert.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
- 然后给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步设置过了!