使用VS Code调试Python并连接到Docker容器环境以进行远程调试


背景

本文介绍了PyCon JP 2017开发Sprint和
这是后续研究会议(Nagoya.Swift September研究会议--connpass)所做工作的摘要。

笔记

以下内容截至2017年,现在有一种更好的方法。从以下观点出发,不建议根据以下内容构建环境。

  • 尽管需要pyenv的情况非常有限,但它对环境的配置有很大影响,因此应谨慎介绍。

  • 远程开发使连接到Docker容器后更易于调试。
  • 例如,您可以按照以下说明将Docker容器用作开发环境。

    https://code.visualstudio.com/docs/remote/containers

    以下内容仅供参考,以了解2017年时的环境,但应注意,仍不建议您遵循此步骤。

    目标

    我通常只使用Jupyter,而不使用其他开发环境,因此我将尝试将VS Code与Python配合使用。
    我会尽力实现下一个目标。

  • pyenv中引入的本地环境中进行调试

  • 在Docker引入的环境中进行调试
  • 在本地环境中运行

    环境

    环境如下。

    • 操作系统:macOS
    • python:python3.6
    • 使用的工具:Anaconda,pyenv,pyenv-virtualenv

    python

    的环境构造

    创建专用目录,并为Anaconda构建环境。
    我认为我喜欢用它来构建环境,但是我使用了pyenv(我觉得我做得太过分了,所以我想尽快从pyenv切换到venv)。

    1
    2
    3
    4
    mkdir ~/Documents/VSCodeHandsOn
    cd ~/Documents/VSCodeHandsOn
    pyenv install anaconda3-2.5.0
    pyenv local anaconda3-2.5.0

    参考

    • pyenv-使用virtualenv --Qiita为每个目录构建python环境

    • Python虚拟环境构建2017.01版--YAMAGUCHI :: Weblog

    • Python虚拟环境构建(2017版)pyenv和pyenv-virtualenv和virtualenv和virtualenvwrapper和pyvenv和venv --Qiita

    • pyenv / pyenv:简单的Python版本管理

    VS Code环境构建

    安装VS Code后,如果继续使用Visual Studio Code引用Python,则似乎可以。
    我使用Python --Visual Studio Marketplace。

    VS代码设置

    让我们为该示例编写以下代码。

    1
    2
    3
    4
    5
    6
    7
    import sys
    import numpy as np # Numpyはanacondaを使ったら使いたくなると思うので

    print('hello python!')

    print('python version:' + str(sys.version_info))
    print('numpy version:' + np.version.full_version)

    当我按原样运行Python代码时,在我的环境中,发生了诸如"找不到numpy,Python版本与我期望的版本不同"之类的问题。
    通过在.vscode/setting.json中指定VS Code使用的Python可以避免这种情况。

    settings.json

    1
    2
    3
    {
        "python.pythonPath": "/Users/[USERNAME]/.pyenv/shims/python"
    }

    参考

    • uroshika的注释:在VisualStudioCode中运行Python时如果无法导入模块怎么办

    • [Visual Studio代码] v1.12.1 Settings.json文件用于设置--Qiita

    • Python路径和版本·DonJayamanne / pythonVSCode Wiki

    • 我试图用Visual Studio Code构建一个Python开发环境。 | Developers.IO

    调试

    我尝试了Python调试方法中的所有方法。

    如果您遵循使用VS Code调试Python的环境构造(用于执行NumPy,SciPy,Matplotlib的环境构造),则该操作方法可以。
    在此阶段,我能够在不编辑配置文件的情况下进行调试。

    参考

    • 使用Visual Studio Code --Qiita准备Python开发环境

    • 使用Visual Studio Code-Qiita调试Node.js

    • 如何获取Python版本--Qiita

    更换棉绒工具

    我将棉绒工具从

    pylint更改为flake8。原因是pylint过于严格(请注意前面代码的第一行),我想跟上潮流。

    安装flake8

    终端使用pip安装。

    1
    % pip install flake8

    皮棉工具更改

    编辑

    settings.json更改要使用的棉绒工具。如果是macOS,配置文件将以Cmd打开,因此您可以添加以下内容。

    settings.json

    1
    2
    3
    4
    5
    6
    7
    8
    9
    {
        // それぞれのユーザー特有の設定
        // "files.autoSave": "afterDelay",

        // python関連の設定
        "python.pythonPath":"/Users/[USERNAME]/.pyenv/shims/python",   // pyenv関連
        "python.linting.pylintEnabled": false,                   // Disable pylint
        "python.linting.flake8Enabled": true                     // Enable flake8
    }

    参考

    • Linting·DonJayamanne / pythonVSCode Wiki

    • 使用Visual Studio Code-Qiita

      进行Python编码的设置

    使用Docker

    提前准备

    Docker安装

    我认为官方网站上的安装过程会有所帮助。我用Homebrew安装了它。

    1
    $ brew cask install docker # だったと思うけれどだいぶ前のことなので自信がない

    参考

    • 安装Docker | Docker文档

    • Docker平台

    • 获取适用于Ubuntu的Docker CE | Docker文档

    安装Jupyter Notebook

    这次,我将使用安装了Jupyter Notebook的图像。在本地安装时,Anaconda似乎建议使用它。

    已安装映像

    的示例

    • tensorflow / README.md(掌握)·tensorflow / tensorflow

    • docker-stacks / tensorflow-notebook at master·jupyter / docker-stacks

    我想散布一个事实,即前者不仅包括Tensorflow执行环境,还包括Scikit Learn,Scipy,Numpy和Jupyter Notebook。我会在下一个Google视频中突然推荐Docker。