我习惯使用pip
将Python软件包安装到Django项目的虚拟环境中。
当我在本地处理Divio Docker项目时,这不起作用。
答案 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团队的成员。这个问题是我们经常通过支持渠道看到的。