如何使用pip将Python软件包安装到Divio Docker项目中?

时间:2018-10-11 11:50:24

标签: python docker pip divio

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

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

1 个答案:

答案 0 :(得分:1)

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

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

下面的详细信息描述了使用Divio项目,但是其原理对于其他Docker安装将相似。

在正确的环境中安装

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

仅位于您可以访问项目文件的目录中是不够的。在这方面,这类似于使用虚拟环境-您需要激活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外壳后,该容器将消失。下次启动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团队的成员。这个问题是我们经常通过支持渠道看到的。