我有一个 dockerfile 来创建一个带有 miniconda 的容器并安装一些软件包(此处已修剪):
FROM continuumio/miniconda3:4.11.0
# install the necessary packages
RUN conda install -c conda-forge python=3.10.4 \
ipykernel=6.13.0 \
numpy=1.22.3
ENV APP_DIR /app
WORKDIR ${APP_DIR}
CMD /bin/bash
然后我使用 VSCode,将“remote-containers”扩展名设置为“在容器中打开文件夹”。
然后我打开一个 python 文件并按 F5 运行,但它无法识别某些包。 我必须单击 VSCode 右下角将解释器从“3.9.2 64-bit”(/usr/bin/python3) 更改为“3.10.4 ('base':conda)”(/opt/conda/bin /python).
有没有办法避免这最后一步? 也许向 devcontainer.json 文件添加一些内容? 到目前为止的主要想法是尝试修改 PATH 环境变量,以便它不会检测到 3.9.2 python,或者使用 dockerfile 中的命令实际删除 3.9.2 python 文件夹或链接,但这些想法似乎都一样很难看。
你可以通过在
devcontainer.json
文件中指定 Python 解释器的路径来避免每次都需要手动选择 Python 解释器。
以下是更新后的
devcontainer.json
文件示例:
{
"name": "My Python Project",
"dockerFile": "Dockerfile",
// Set this to the path of your conda environment's Python interpreter
"settings": {
"python.defaultInterpreterPath": "/opt/conda/bin/python"
}
}
解释:
- "python.defaultInterpreterPath" : 这个设置告诉 VS Code 使用哪个 Python 解释器。
- "/opt/conda/bin/python" : 这是你 Conda 环境中 Python 解释器的默认路径。 如果你在 Dockerfile 中修改了路径,请相应地更新它。
其他建议:
-
创建
.vscode
文件夹 : 为了避免与项目代码混淆,建议在项目根目录下创建一个名为.vscode
的文件夹,并将devcontainer.json
文件放在其中。 -
使用
conda run
: 为了确保你的脚本始终在 Conda 环境中运行,你可以在 Dockerfile 的CMD
指令中使用conda run
。 例如:
dockerfile
CMD ["conda", "run", "-n", "base", "/bin/bash"]
这将使用 Conda 环境的 `base` 作为默认环境,并在其中运行 `/bin/bash`。
通过这些修改,VS Code 将自动使用你在
devcontainer.json
文件中指定的 Python 解释器,而无需每次都手动选择。