pycharm 远程调试docker 中的Python脚本

  • Post author:
  • Post category:python




一、远程服务器以及本地pycharm配置



1 原理

将docker中的ssh端口22映射到服务器中的某一个端口,例如9999,本地使用docker的用户名和密码登录9999端口,也就登录了相应的docker



2 ssh配置步骤

  • 运行docker镜像,并且指定相应的端口映射关系
NV_GPU=5 nvidia-docker run -ti --name my_tensorflow1.9_py3 -v ~/dataShare:/home/dataShare -p 9999:22 192.168.12.23:5000/tensorflow1.4:18.01-py2 /bin/bash

这里指定了容器运行后,将容器的端口22映射到服务器的端口9999。

  • 在远程服务器以及daocker中分别安装ssh服务,openssh-server
sudo apt-get install openssh-server
  • 在docker中配置ssh服务
#允许使用root身份登录docker
sudo sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
sudo sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

#下面这一步可能没有权限,可以自己打开相应的文件,将"export VISIBLE=now"写入/etc/profile的最后一行
echo "export VISIBLE=now" >> /etc/profile
  • 重启ssh服务
service ssh restart
  • 在服务器中测试端口映射
#查看自己的docker container端口22所映射的服务器端口
docker port my_tensorflow1.9_py3 22

#如果映射成功,可以看到如下输出
0.0.0.0:9999
  • 在本地测试ssh登录docker container
#如果本地是windows,可以下载git,使用git bash测试
ssh <username>@<server IP> -p 9999

如果上面的ssh配置失败,可以查看防火墙是否禁用了相应端口。



3 本地pycharm配置

  • 选择Tools->Deployment->Configuration,增加SFTP服务器

    在这里插入图片描述

  • 点击左上角加号,输入server name,以及选择Type为SFTP

    在这里插入图片描述

  • 按照自己服务器地址、映射端口、docker用户名密码进行相应设置

    在这里插入图片描述

  • 选择Mapping选项卡,配置本地、远程,对应项目路径的映射

    在这里插入图片描述

  • 配置远程项目以及本地项目的同步

    选择Tools->Deployment->Automatic Upload(always)

    这样就可以随时使用ctrl+s来进行本地项目修改和远程docker中项目的自动同步

  • 配置远程编译器

    File->Settings->Project:your project name->Project Interpreter

    在这里插入图片描述

选择Add Interpreter

选择SSH Interpreter,右边窗口选择Existing server configuration,选择已经配置好的远程服务器即可。接下来会有两个选项Create和Move,选择Move即可

在这里插入图片描述

  • 映射本地项目路径和对应的服务器项目路径

    在这里插入图片描述

  • 到这一步几乎已经完成了远程调试docker的所有配置,但是如果你现在就开始甩开键盘庆祝的话,就有点早了。运行基于GPU的TensorFlow项目时,会出现错误 ImportError:libcuda.so.1: cannot open shared object file: No such file or directory

    在这里插入图片描述


    • 解决办法


      选择Run->Edit Configurations->点击加号->选择python->找到项目运行主文件增加环境变量LD_LIBRARY_PATH=/usr/local/cuda/lib64。这里要查看自己docker中对应的路径,使用命令如下:
echo $LD_LIBRARY_PATH

然后设置相应的路径即可



二、使用中的问题



1 在使用pycharm调试程序的时候,无法连接到控制台,程序无法运行


问题描述:


在这里插入图片描述


解决办法:


将run->Edit Configurations相应选项卡下,run with python console的“√”去掉

在这里插入图片描述



版权声明:本文为shinetzh原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。