j_d*_*dev 7 python ubuntu pip docker
我正在尝试构建基于 Ubuntu 18.04 的自定义 Docker 映像。Ubuntu 预装了 Python 3.6,但我想 1.) 安装 Python 3.7,2.) 将其设置为默认 Python 版本(因此可以使用python、python3.7和 3.)安装 pip 来调用它。当我运行 docker build 时,它无法重新加载~/.bashrc,因此python不是python3.7. 我该如何解决这个问题?
FROM ubuntu:18.04
# Set temp work directory
# for package configuration
WORKDIR /usr/src/cache
# Update apt packages
RUN apt update
RUN apt upgrade -y
# Install vim
RUN apt install vim -y
# Install python 3.7
RUN apt install software-properties-common -y
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt install python3.7 -y
# Make python 3.7 the default
RUN echo "alias python=python3.7" >> ~/.bashrc
RUN export PATH=${PATH}:/usr/bin/python3.7
RUN /bin/bash -c "source ~/.bashrc"
# Install pip
RUN apt install python3-pip -y
RUN python -m pip install --upgrade pip
# Install lsof
RUN apt install lsof
# Install ta-lib
# Source: https://medium.com/@artiya4u/installing-ta-lib-on-ubuntu-944d8ca24eae
RUN apt install build-essential wget -y
RUN wget https://artiya4u.keybase.pub/TA-lib/ta-lib-0.4.0-src.tar.gz
RUN tar -xvf ta-lib-0.4.0-src.tar.gz
RUN /bin/bash -c "cd ta-lib/; ./configure --prefix=/usr; make; make install"
# Install pip packages
COPY requirements.txt ./
RUN pip install -r requirements.txt
# Set working directory for code
WORKDIR /usr/src/app
Run Code Online (Sandbox Code Playgroud)
运行时输出docker build:
Step 1/20 : FROM ubuntu:18.04
---> c3c304cb4f22
Step 2/20 : WORKDIR /usr/src/cache
---> Using cache
---> 6bab8662b50a
Step 3/20 : RUN apt update
---> Using cache
---> 4d3bc75e5b24
Step 4/20 : RUN apt upgrade -y
---> Using cache
---> 24a93e9b2518
Step 5/20 : RUN apt install software-properties-common -y
---> Using cache
---> 077ead1bcb54
Step 6/20 : RUN add-apt-repository ppa:deadsnakes/ppa
---> Using cache
---> 7771a6ac7068
Step 7/20 : RUN apt install python3.7 -y
---> Using cache
---> 5f57462b0444
Step 8/20 : RUN echo "alias python=python3.7" >> ~/.bashrc
---> Running in c31352b84ecd
Removing intermediate container c31352b84ecd
---> c1060eaa66b8
Step 9/20 : RUN export PATH=${PATH}:/usr/bin/python3.7
---> Running in 5de52797c355
Removing intermediate container 5de52797c355
---> 2a9eb6215da8
Step 10/20 : RUN /bin/bash -c "source ~/.bashrc"
---> Running in cde1dd943e21
Removing intermediate container cde1dd943e21
---> 99eae1743824
Step 11/20 : RUN apt install python3-pip -y
---> Running in 2dece67c9c40
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Reading package lists...
Building dependency tree...
Reading state information...
........[OMITTING SOME OUTPUT].......
Setting up build-essential (12.4ubuntu1) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Removing intermediate container 2dece67c9c40
---> 34c1ecded3f2
Step 12/20 : RUN python -m pip install --upgrade pip
---> Running in 32ffece96844
/bin/sh: 1: python: not found
The command '/bin/sh -c python -m pip install --upgrade pip' returned a non-zero code: 127
Run Code Online (Sandbox Code Playgroud)
可以使用 update-alternatives 将 Python3.7 设置为默认 python。在docker文件中安装python3.7的命令后添加:
# Add 3.7 to the available alternatives
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1
# Set python3.7 as the default python
RUN update-alternatives --set python /usr/bin/python3.7
Run Code Online (Sandbox Code Playgroud)
如果您还需要 python3 指向 3.7,则将上述调用中的 /usr/bin/python 和 python 替换为 /usr/bin/python3 和 python3。
| 归档时间: |
|
| 查看次数: |
42062 次 |
| 最近记录: |