zoukankan      html  css  js  c++  java
  • PyCharm使用之配置SSH Interpreter

      在文章PyCharm使用之利用Docker镜像搭建Python开发环境中,该文章介绍了在PyCharm中如何利用Docker镜像搭建Python开发环境。在本文中,将会介绍如何使用PyCharm来配置SSH Interpreter,本文中的SSH Interpreter用Docker镜像来实现。
      演示项目的结构如下图所示:

    项目截图

    制作带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
    $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”,如下图:

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

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

    配置容器内的Python路径
    需要注意的是,在这里我们能够看到本地项目路径对应于容器内的/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爬虫与算法(微信号为:easy_web_scrape), 欢迎大家关注~

  • 相关阅读:
    mysql find_int_set
    PHPSTROM8.0 注册码(7.1也可用)
    gym 101657 D
    gym101657 C
    poj 3525
    poj1279
    poj3335
    poj 1228
    poj 1873
    poj 2074
  • 原文地址:https://www.cnblogs.com/jclian91/p/12099549.html
Copyright © 2011-2022 走看看