PyCharm使用之配置SSH Interpreter的方法步骤


Posted in Python onDecember 26, 2019

在文章PyCharm使用之利用Docker镜像搭建Python开发环境中,该文章介绍了在PyCharm中如何利用Docker镜像搭建Python开发环境。在本文中,将会介绍如何使用PyCharm来配置SSH Interpreter,本文中的SSH Interpreter用Docker镜像来实现。

演示项目的结构如下图所示:

PyCharm使用之配置SSH Interpreter的方法步骤

制作带SSH服务的Docker镜像

首先,我们先制作带SSH服务的Docker镜像,里面含有Python开发环境,Dockerfile文件为python_env.build,内容如下:

FROM centos:7.2.1511

# author label
LABEL maintainer="jclian"

# install related packages
ENV ENVIRONMENT DOCKER_PROD
RUN cd / && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
  && yum makecache \
  && yum install -y wget aclocal automake autoconf make gcc gcc-c++ python-devel mysql-devel bzip2 libffi-devel epel-release \
  && yum clean all

# install python 3.7.0
RUN wget https://npm.taobao.org/mirrors/python/3.7.0/Python-3.7.0.tar.xz \
  && tar -xvf Python-3.7.0.tar.xz -C /usr/local/ \
  && rm -rf Python-3.7.0.tar.xz \
  && cd /usr/local/Python-3.7.0 \
  && ./configure && make && make install

# 创建src目录
COPY src /root/src
WORKDIR /root/src

# install related packages
RUN pip3 install -i https://pypi.doubanio.com/simple/ -r requirements.txt

# expose port
EXPOSE 15731

# install ssh
RUN yum -y update; yum clean all
RUN yum -y install openssh-server passwd; yum clean all
ADD ./start.sh /start.sh
RUN mkdir /var/run/sshd

RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''

RUN chmod 755 /start.sh
RUN /start.sh
ENTRYPOINT ["/usr/sbin/sshd", "-D"]

在这个CentOS系统中,我们配置了SSH服务,其中start.sh中含有账号名和密码,同时又配置了Python开发环境,start.sh文件的内容如下:

#!/bin/bash

__create_user() {
# Create a user to SSH into as.
useradd user
SSH_USERPASS=newpass
echo -e "$SSH_USERPASS\n$SSH_USERPASS" | (passwd --stdin user)
echo ssh user password: $SSH_USERPASS
}

# Call all functions
__create_user

requirements.txt的内容如下:

tornado==5.1.1
jieba==0.39

安装的第三方模块为tornado和jieba。制作镜像的脚本为build.sh,内容如下:

#!/usr/bin/env bash

TIMENOW=`date +%y.%m.%d.%H%M`

# 进行docker镜像打包
docker build -f python_dev.build -t ssh_docker_python_dev:${TIMENOW} .

运行该镜像,生成的docker镜像为ssh_docker_python_dev:19.12.25.1346, 如下所示:

$ docker images | grep ssh_docker
ssh_docker_python_dev   19.12.25.1346  cca5b78c199c  9 hours ago  988MB

到此,制作docker镜像完成。

测试镜像的SSH服务

接着,我们在本地启动该docker镜像,命令如下:

$ docker run -d -p 49154:22 ssh_docker_python_dev:19.12.25.1346

接着输入:

$ ssh -p 49154 user@127.0.0.1

在接受凭证时选择yes,并输入密码“newpass”,就能顺利进入该容器内部了,尝试Python使用,如下:

$ ssh -p 49154 user@127.0.0.1
user@127.0.0.1's password:
[user@4718f33bc470 ~]$ python3
Python 3.7.0 (default, Dec 24 2019, 23:58:12)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import jieba
>>> list(jieba.cut("三亚的风景很不错"))
Building prefix dict from the default dictionary ...
Dumping model to file cache /tmp/jieba.cache
Loading model cost 1.197 seconds.
Prefix dict has been built succesfully.
['三亚', '的', '风景', '很', '不错']

在PyCharm中配置SSH Interpreter

在PyCharm的系统配置中,在“Project Interpreter”选择中可以看到右侧的“Project Inter”中没有interpreter,我们点击有变动的小齿轮,选择“Add”,如下图:

PyCharm使用之配置SSH Interpreter的方法步骤

在弹出来的界面中,我们选择interpreter的类型为“SSH Interpreter”,同时设置连接信息如下图:

PyCharm使用之配置SSH Interpreter的方法步骤

点击“Next”,输入密码“newpass”,再点击“Next”,选择Interpreter的路径为“/usr/local/Python-3.7.0/python”,如下图:

PyCharm使用之配置SSH Interpreter的方法步骤

需要注意的是,在这里我们能够看到本地项目路径对应于容器内的/tmp/pycharm_project_951路径,同时会把该项目中的文件自动上传至容器内对应的项目路径。最后点击“Finish”即可完成SSH Interpreter的配置。

测试SSH Interpreter

配置好Python环境后,我们用jieba_test.py作为测试文件,来验证Python环境是否配置好。jieba_test.py的代码如下:

# -*- coding: utf-8 -*-
# author: Jclian91
# place: Pudong Shanghai
# time: 2:09 下午
import os, re, json, traceback
import jieba

if __name__ == '__main__':
  sent = '最近这几天,我都在三亚上班,看着海开发的感觉还不错。'
  print(list(jieba.cut(sent)))

输出结果如下:

ssh://user@127.0.0.1:49154/usr/local/Python-3.7.0/python -u /tmp/pycharm_project_58/jieba_test.py
Building prefix dict from the default dictionary ...
Loading model from cache /tmp/jieba.cache
Loading model cost 0.775 seconds.
Prefix dict has been built succesfully.
['最近', '这', '几天', ',', '我', '都', '在', '三亚', '上班', ',', '看着', '海', '开发', '的', '感觉', '还', '不错', '。']

太好了,Docker容器内的Python开发环境是可以使用的。这时候,我们在进入Docker容器内去查看下,如下:

$ docker ps
CONTAINER ID    IMAGE                 COMMAND        CREATED       STATUS       PORTS               NAMES
4718f33bc470    ssh_docker_python_dev:19.12.25.1346  "/usr/sbin/sshd -D"  20 minutes ago   Up 20 minutes    15731/tcp, 0.0.0.0:49154->22/tcp  brave_nobel
$ docker exec -it 4718f33bc470 bash
[root@4718f33bc470 src]# cd /tmp/pycharm_project_58/
[root@4718f33bc470 pycharm_project_58]# ls -l
total 24
-rw-rw-r-- 1 user user 960 Dec 25 14:12 README.md
-rw-rw-r-- 1 user user 150 Dec 25 13:21 build.sh
-rw-rw-r-- 1 user user 284 Dec 25 14:10 jieba_test.py
-rw-rw-r-- 1 user user 1100 Dec 25 13:46 python_dev.build
drwxrwxr-x 2 user user 4096 Dec 25 22:48 src
-rw-rw-r-- 1 user user 235 Dec 25 13:21 start.sh
[root@4718f33bc470 pycharm_project_58]#

可以看到,容器中的/tmp/pycharm_project_58路径下确实包含了本地项目的所有文件。

关于如何制作带SSH服务和Python开发环境的Docker镜像以及如何在PyCharm中配置SSH Interpreter的讲述到此结束,感谢大家的阅读~

该演示项目已上传至Github,网址为:https://github.com/percent4/Python_docker。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 生成不重复的随机数的代码
May 15 Python
python实现socket客户端和服务端简单示例
Feb 24 Python
盘点提高 Python 代码效率的方法
Jul 03 Python
Django中处理出错页面的方法
Jul 15 Python
Python3使用requests包抓取并保存网页源码的方法
Mar 15 Python
NumPy 数组使用大全
Apr 25 Python
pytorch GAN生成对抗网络实例
Jan 10 Python
Tensorflow 多线程设置方式
Feb 06 Python
Python使用ElementTree美化XML格式的操作
Mar 06 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
Mar 27 Python
python datetime时间格式的相互转换问题
Jun 11 Python
详解Python高阶函数
Aug 15 Python
python DataFrame转dict字典过程详解
Dec 26 #Python
Numpy之reshape()使用详解
Dec 26 #Python
PyCharm使用Docker镜像搭建Python开发环境
Dec 26 #Python
python路径的写法及目录的获取方式
Dec 26 #Python
pyenv虚拟环境管理python多版本和软件库的方法
Dec 26 #Python
Python嵌套函数,作用域与偏函数用法实例分析
Dec 26 #Python
python 串口读取+存储+输出处理实例
Dec 26 #Python
You might like
PHP采集利器 Snoopy 试用心得
2011/07/03 PHP
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
php中socket通信机制实例详解
2015/01/03 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
php微信开发之上传临时素材
2016/06/24 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
JSON.stringify 语法实例讲解
2012/03/14 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
asp.net中oracle 存储过程(图文)
2015/08/12 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
js实现简单的打印表格
2020/01/15 Javascript
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
python基础教程之分支、循环简单用法
2016/06/16 Python
Django开发中复选框用法示例
2018/03/20 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
深入了解Python在HDA中的应用
2019/09/05 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
函授本科自我鉴定
2014/02/04 职场文书
事假请假条范文
2014/04/11 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
德育标兵事迹材料
2014/08/24 职场文书
兴趣班停课通知
2015/04/24 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL