[英]Install and using pip and virtualenv in Docker
我想在Docker容器中安裝Python,Pip和virtualenv,這是Ubuntu,我通過Dockerfile創建圖像:
FROM ubuntu:16.04
RUN apt-get update -y
RUN apt-get
RUN apt-get python3 -y
RUN apt-get install python3-pip -y
RUN pip install virtualenv
...
當它到了這里時,它出現了“/ bin / sh:1:pip:not found”,但是在安裝過程中沒有顯示異常,這是不是意味着我沒有安裝pip對吧? 或者在使用pip命令之前我應該做什么?
然后我像這樣更改了Dockerfile:
...
RUN apt-get python3 -y
RUN apt-get install python3-pip -y
RUN apt-get install python3-virtualenv -y
RUN virtualenv --no-stie-packages -p /path/python3 py3env
...
但它仍然說/ bin / sh:1:virtualenv:沒找到,就在這里
我還安裝了git,git clone命令運行正常,可以使用。 我哪里錯了,或者我該怎么辦?
在基於Debian的平台上,包括Ubuntu, python3-pip
安裝的命令叫做pip3
,以便與任何系統安裝的Python 2及其pip
和平共存。
有點類似, virtualenv
命令不是由包python3-virtualenv
安裝的; 為此, 你需要apt-get install -y virtualenv
。
請注意, venv
包含在Python 3標准庫中,因此您根本不需要安裝任何東西。
python3 -m venv newenv
你為什么要在Docker里面想要一個virtualenv呢? (在某些情況下它是有意義的,但在絕大多數情況下,您希望Docker容器盡可能簡單,這意味着,以root身份安裝所有內容,並在需要更新某些內容時重建整個容器。)
另外,您通常希望最小化RUN
語句的數量。 在調試時創建多個層可能是可以防御的,但是什么都不做的層肯定是浪費。 也許還發現apt-get
可以一次安裝多個包。
RUN apt-get update -y && \
apt-get install -y python3 python3-pip && \
...
只要其中一個命令失敗, &&
就會導致整個RUN
序列失敗。
在容器內使用虛擬環境有什么意義? Virtualenv對本地開發非常有用,它允許您在一台機器上使用不同版本的python解釋器和包。 但是在您的docker容器中應該只有一個進程(實際上它是進程的容器),並且您可以在全局安裝所有需求。
但如果你真的有充分的理由,你可能必須使用“python3 way”來創建虛擬環境。
所以你的Dockerfile看起來應該是這樣的:
FROM ubuntu:16.04
RUN apt-get update -y \
&& apt install python3 -y \
&& apt install python3-pip -y \
&& apt install python3-venv -y \
&& python3 -m venv venv
ENTRYPOINT bin/bash
您可以使用命令構建它
docker build -t ubuntu-python .
並運行
docker run --rm -it ubuntu-python
在容器shell中,您可以使用命令激活venv
source venv/bin/activate
然后運行python解釋器並檢查它是否從venv運行:
>>> import sys
>>> sys.executable
它應該打印/venv/bin/python
我不知道如何運行預先激活的容器(我不知道這個詞真的存在)虛擬環境,我仍然認為你實際上不需要在容器中使用虛擬環境。
此外,你最好嘗試為docker准備好python-images ,例如淺色高山圖像,而不是擴展基本的ubuntu圖像。
請原諒我可怕的俄語 - 英語,我希望你能理解我的答案:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.