使用 Docker 配置解释器
最后修改时间:2023 年 8 月 2 日介绍
PyCharm 与Docker集成允许您在 Docker 容器中部署的各种配置的开发环境中运行应用程序。
先决条件
确保满足以下先决条件:
Docker 已安装,如Docker 文档中所述。
您可以在各种平台上安装 Docker,但这里我们将使用Windows安装。
请注意,您可能想在不同平台上重复本教程;然后使用适用于macOS和Linux的 Docker 安装(Ubuntu,也提供其他发行版相关的说明)。
您有稳定的互联网连接,以便 PyCharm 可以下载并运行
busybox:latest
(最新版本的BusyBox Docker 官方镜像)。使用 Docker 成功配置解释器后,您就可以离线了。在开始使用 Docker 之前,请确保已启用Docker插件。该插件与 PyCharm 捆绑在一起,并且默认情况下处于激活状态。如果插件未激活,请在IDE 设置的 插件页面上启用它,如安装插件中所述。CtrlAlt0S
在“设置”对话框 ( ) 中,选择“构建”、“执行”、“部署”| Docker ,然后在Connect to Docker daemon with下为 <您的操作系统>选择Docker 。例如,如果您使用的是 macOS,请选择Docker for Mac。请参阅Docker 设置中的更多详细信息。CtrlAlt0S
请注意,您无法将任何 Python 包安装到基于 Docker 的项目解释器中。
准备一个例子
创建一个Python项目 QuadraticEquation
,添加Solver.py文件,并复制并粘贴以下代码:
import math
class Solver:
def demo(self, a, b, c):
d = b ** 2 - 4 * a * c
if d > 0:
disc = math.sqrt(d)
root1 = (-b + disc) / (2 * a)
root2 = (-b - disc) / (2 * a)
return root1, root2
elif d == 0:
return -b / (2 * a)
else:
return "This equation has no roots"
if __name__ == '__main__':
solver = Solver()
while True:
a = int(input("a: "))
b = int(input("b: "))
c = int(input("c: "))
result = solver.demo(a, b, c)
print(result)
将 Docker 配置为远程解释器
现在,让我们定义一个基于 Docker 的远程解释器。
执行以下操作之一:
单击Python 解释器选择器并选择添加新解释器。
按打开“设置”并转到“项目:<项目名称> |” Python解释器。单击可用解释器列表旁边的添加解释器链接。CtrlAlt0S
单击Python 解释器选择器并选择解释器设置。单击可用解释器列表旁边的添加解释器链接。
选择在 Docker 上。
在Docker 服务器下拉列表中选择现有的 Docker 配置。
或者,单击并执行以下步骤来创建新的 Docker 配置:
- 创建 Docker 配置
单击以添加 Docker 配置并指定如何连接到 Docker 守护程序。
连接设置取决于您的 Docker 版本和操作系统。有关更多信息,请参阅Docker 连接设置。
连接成功消息应出现在对话框底部。
有关在 Windows 或 macOS 上使用 Docker 时将本地路径映射到运行 Docker 守护程序的虚拟机的更多信息,请参阅Windows 和 macOS 主机的虚拟机路径映射。您将无法对映射的本地路径之外的目录使用卷和绑定安装。
该表在 Linux 主机上不可用,Docker 在 Linux 主机上本机运行,您可以将任何目录挂载到容器中。
以下操作取决于您是要从 Docker 注册表中提取预构建的映像还是从 Dockerfile 在本地构建映像。
- 构建 Docker 镜像
选择构建并根据需要更改Dockerfile和上下文文件夹字段中的默认值。
如果需要,请展开可选部分并指定以下内容:
图片标签
为构建的图像指定可选的名称和标签。
这对于将来参考图像很有帮助。如果将该字段留空,则图像将仅具有随机的唯一标识符。
构建选项
设置支持的
docker build
选项。例如,您可以使用选项指定构建图像的元数据
--label
。构建参数
指定构建时变量的值,这些变量可以在构建过程中像常规环境变量一样访问,但不会保留在中间或最终映像中。
这类似于在命令
--build-args
中使用选项docker build
。这些变量必须使用指令在 Dockerfile 中定义
ARG
。例如,您可以为要使用的基础映像的版本定义一个变量:ARG PY_VERSION=latest FROM python:$PY_VERSION
在这种情况下,变量
PY_VERSION
将默认为latest
,并且 Dockerfile 将生成具有最新可用 Python 版本的映像,除非您将其重新定义为构建时参数。如果您设置,,PY_VERSION=3.10
Docker 将python:3.10
改为拉取,这将运行 Python 版本 3.10 的容器。重新定义
PY_VERSION
参数类似于设置以下命令行选项:--build-arg PY_VERSION=3.10
您可以提供多个用空格分隔的参数。
等待 PyCharm 连接到 Docker 守护进程并完成容器内省。
接下来,选择要在 Docker 容器中使用的解释器。您可以选择容器中已配置的任何 virtualenv 或 conda 环境,也可以选择系统解释器。
单击“确定”。
配置的远程解释器将添加到列表中。
在 Docker 容器中运行应用程序
main
在装订线中,单击子句旁边的图标,然后选择运行 'solver':
该脚本在“运行”工具窗口中启动。为脚本提供值:
切换到服务工具窗口以预览容器详细信息。展开容器节点并选择正在运行的容器。
请注意,“日志”选项卡包含相同的执行结果。
在 Docker 容器中调试应用程序
接下来,让我们调试应用程序。为此,我们在d
通过单击行号进行计算的行上放置一个断点。然后单击装订线并选择Debug 'solver'。
调试器也在 Docker 容器中运行:
然而,现在这个容器有一个不同的 ID,因此 - 不同的名称。
警告
当应用程序以任何方式执行时,PyCharm 都会创建一个新容器,这一点很重要。无论是运行、调试、覆盖运行、测试——每次执行都需要一个新容器!
概括
让我们总结一下在 PyCharm 的帮助下完成的工作:
我们创建了一个项目并添加了一个 Python 脚本。
我们配置了远程解释器。
我们在 Docker 容器中运行并调试了脚本。
最后,我们启动了 Docker 工具窗口,并在终端中看到了所有可见的详细信息。
有关更多信息,请参阅以下视频教程:
感谢您的反馈意见!