【问题标题】:How can I use pip to install Python packages into my Divio Docker project?如何使用 pip 将 Python 包安装到我的 Divio Docker 项目中?
【发布时间】:2018-10-11 11:50:24
【问题描述】:

我习惯于使用pip 将 Python 包安装到我的 Django 项目的虚拟环境中。

当我在本地使用 Divio Docker 项目时,这不起作用。

【问题讨论】:

    标签: python docker pip divio


    【解决方案1】:

    将 Python 包安装到 Docker 项目时需要注意两点:

    • 软件包必须安装在正确的环境中
    • 如果以后要使用已安装的包,需要以更永久的方式安装

    下面的细节描述了使用 Divio 项目,但原理与其他 Docker 安装类似。

    在正确的环境中安装

    要在命令行上使用pip 将Python 包安装到Dockerised 项目中,您需要在Docker 环境中使用pip,即容器内。

    仅仅在您可以访问项目文件的目录中是不够的。在这方面,它类似于使用虚拟环境 - 您需要激活 virtualenv 。 (否则,您的包将不会安装在虚拟环境中,而是安装在您自己的主机环境中。)

    要激活虚拟环境,您需要在其上运行 source bin/activate 之类的东西。

    在 Divio web 容器中安装软件包:

    # start a bash prompt inside the project
    docker-compose run --rm web bash
    
    # install the package in the usual way
    pip install rsa
    

    rsa 现在已安装并可使用。

    更多永久安装

    然而,到目前为止,该软件包只能在该特定容器中安装和使用。一旦退出 bash shell,容器就会消失。下次您启动 web 容器时,您将不会在那里找到 rsa 包。那是因为容器每次都是从它的 image 启动的。

    为了保持安装包,您需要将它包含在映像中。

    Divio 项目包含一个 requirements.in 文件,其中列出了将包含在映像中的 Python 包。

    在该文件的末尾添加一个包含rsa 的新行。然后运行:

    docker-compose build web
    

    这将重建 Docker 映像。下次您使用(例如)docker-compose run --rm web bash 启动容器时,它将包含该 Python 包。

    (Divio Developer Handbook has some additional guidance on using pip.)

    注意:我是 Divio 团队的成员。这个问题是我们经常通过我们的支持渠道看到的一个问题。

    【讨论】:

      猜你喜欢
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      • 1970-01-01
      相关资源
      最近更新 更多