【问题标题】:Installing Python libraries in the Visual Studio Code container在 Visual Studio Code 容器中安装 Python 库
【发布时间】:2021-06-28 14:02:10
【问题描述】:

我可以在位于 Docker Volume 的文件夹中编辑 python 代码。我使用 Visual Studio Code,一般来说它工作正常。

我遇到的唯一问题是库(例如 pandas 和 numpy)没有安装在 Visual Studio 为挂载卷而创建的容器中,所以我收到警告错误。

如何在 Visual Studio Code 容器中安装这些库?

** 更新 **

这是我的应用程序Dockerfile,看到图像中包含库,而不是卷:

FROM daskdev/dask

RUN /opt/conda/bin/conda create -p /pyenv -y
RUN /opt/conda/bin/conda install -p /pyenv scikit-learn flask waitress gunicorn \
    pytest apscheduler matplotlib pyodbc -y
RUN /opt/conda/bin/conda install -p /pyenv -c conda-forge dask-ml pyarrow -y
RUN /opt/conda/bin/conda install -p /pyenv pip -y
RUN /pyenv/bin/pip install pydrill 

并且应用程序以docker compose启动:

version: '3'

services:   

  web:
    image: img-python
    container_name: cont_flask
    volumes:
      - vol_py_code:/code
    ports:
      - "5000:5000"
    working_dir: /code
    entrypoint:
      - /pyenv/bin/gunicorn
    command:
      - -b 0.0.0.0:5000
      - --reload
      - app.frontend.app:app

【问题讨论】:

  • 如果你展示了你的 Dockerfile 以及你如何运行容器会很有用
  • edit 提供有关人们如何重现您的设置的详细信息,尤其是“Visual Studio 创建的用于挂载卷的容器”的这一部分。
  • @GinoMempin VSC 有一个 Docker 插件,可让您探索卷。添加该插件后,您可以看到卷列表,然后您可以右键单击该卷来浏览它。我不知道 VSC 是如何创建卷的,我只是在 Docker 中看到它。

标签: python docker visual-studio-code


【解决方案1】:

https://code.visualstudio.com/docs/python/python-tutorial
在 VScode 文档中,python 教程下有一个名为“安装和使用包”的部分。我想这会向你解释。
编辑:
您是否已将其添加到您的 dockerfile 中?喜欢:
运行 pip 安装熊猫
试着看看这个问题的答案,看看是否有帮助:
How to add Python libraries to Docker image
编辑2:
似乎 VSC 在创建容器时正在使用本地环境,并且没有 devcontainer.json 文件。
我认为您需要在本地环境中安装库或在 VSC 中设置开发容器:
https://code.visualstudio.com/docs/remote/create-dev-container
Microsoft 有一个包含开发容器模板的 GitHub 存储库:
https://github.com/microsoft/vscode-dev-containers
如果你已经搭建好了开发容器,能否将你的 devcontainer.json 文件添加到你的问题中,以便查看?

【讨论】:

  • 该链接谈到在非容器机器中安装软件包,我尝试遵循它,但不清楚差异,所以我无法让它工作
  • @ps0604 我已经用类似问题的链接编辑了答案,希望对您有所帮助。
  • 我使用的 docker 文件包含所有库,因为我可以毫无问题地运行它。该 docker 文件已使用 Python 代码安装了一个卷。该卷是我使用 Visual Studio Code 打开的卷,但由于 python 库位于使用我的 Dockerfile 构建的容器中,而不是 Visual Studio Code 构建的用于访问该卷的容器中,因此这些库丢失了。所以问题是如何让这些库可以被打开卷时自动创建的 Visual Studio Code 容器访问。
  • 请查看 Dockerfile 和 Docker compose 的更新问题 问题是 Visual Studio Code 会自动创建一个容器。有时它重用容器,有时它创建一个新容器。那么如何安装库呢?
  • 它使用了正确的环境,VSC 正在创建一个安装了 python 的新容器以进行语法检查,但该容器没有在代码中声明的库,因此会出现无法找到这些库的警告
【解决方案2】:

这里是 docker 教程:https://code.visualstudio.com/docs/containers/quickstart-python#_add-docker-files-to-the-project

在您的情况下,我认为您应该将额外的包放入生成的requirements.txt。如果这不能开箱即用,您可以修改 dockerfile 扩展 microsoft 默认 python 映像。

【讨论】:

  • 我没有创建或选择任何 Dockerfile,只是用 VSC 打开 Docker 卷。没有要编辑的 Dockerfile 或 requirements.txt 文件。
  • 也许您可以在附加卷的情况下在开发容器中编辑代码?您还可以让 dev docker compose 覆盖 prod ,这可能是最佳实践。为什么需要按照说明使用它?
  • 编辑开发容器的问题是它是临时的。 VSC 一直在创建新容器。这就是为什么我说它们是暂时的。
  • 在你的食谱 Dockerfile 中描述你所需要的一切都无关紧要,而不是像最后那样构建新容器。
  • 这个食谱 Dockerfile 在哪里?
【解决方案3】:

警告源于对 Docker 卷和 Visual Studio Code 使用不同的 Python 解释器。

这可以通过将 python 解释器定向到 Docker 卷中的解释器来解决。单击 VS Code 左下角的一个 python 解释器(下图中的“Python 3.8.0”),您可以选择更改路径。在 docker 卷中输入 Python 的路径。

编辑:路径可能类似于/pyenv/bin/python

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-14
    • 2019-06-14
    • 1970-01-01
    • 2017-04-02
    • 2021-01-23
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多