首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果系统中没有python3.6,我可以在ubuntu18.04中安装python3.7吗?

如果系统中没有python3.6,我可以在ubuntu18.04中安装python3.7吗?
EN

Stack Overflow用户
提问于 2019-05-14 17:17:10
回答 5查看 19.5K关注 0票数 20

请仔细阅读问题,然后结束前作为副本,我相信用例是独特的。

我正在尝试创建一个只安装了python3.7的的对接映像,问题是如果我试图安装pip,命令还会安装python3.6,是我不想要的

我正在修补的理想码头文件的相关部分如下

代码语言:javascript
复制
FROM ubuntu:18.04

# Upgrade installed packages
RUN apt-get update && apt-get upgrade -y && apt-get clean

# (...)

# Python package management and basic dependencies
RUN apt-get install -y python3.7 python3.7-dev python3.7-pip

# Register the version in alternatives
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1

# Set python 3 as the default python
RUN update-alternatives --set python /usr/bin/python3.7

# Upgrade pip to latest version
RUN python -m ensurepip --upgrade

# (...)

这可能会失败,因为python3.7-pip似乎不存在;只有python3-pip才会失败,这就是安装python3.6-pip的原因。

我试着完全不安装pip并手动执行,如下所示

代码语言:javascript
复制
# (...)

RUN apt-get install -y python3.7 python3.7-dev

# (...)

RUN curl 'https://bootstrap.pypa.io/get-pip.py' > get-pip.py

RUN python get-pip.py pip --no-setuptools --no-wheel

如果出现此错误,将失败:

代码语言:javascript
复制
Traceback (most recent call last):
  File "get-pip.py", line 21492, in <module>
    main()
  File "get-pip.py", line 197, in main
    bootstrap(tmpdir=tmpdir)
  File "get-pip.py", line 82, in bootstrap
    import pip._internal
  File "/tmp/tmpbez2vju9/pip.zip/pip/_internal/__init__.py", line 40, in <module>
  File "/tmp/tmpbez2vju9/pip.zip/pip/_internal/cli/autocompletion.py", line 8, in <module>
  File "/tmp/tmpbez2vju9/pip.zip/pip/_internal/cli/main_parser.py", line 8, in <module>
  File "/tmp/tmpbez2vju9/pip.zip/pip/_internal/cli/cmdoptions.py", line 14, in <module>
ModuleNotFoundError: No module named 'distutils.util'

同样,安装python3-distutils会导致python3.6出现在系统中。

那么,是否可以在ubuntu18.04中只安装一个功能齐全的python 3.7,而不必安装python 3.6?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-05-14 22:30:29

我看到两种选择:

  1. 使用Ubuntu映像,使Python不受系统的影响。安装pyenv (https://github.com/pyenv/pyenv),然后下载python3.7install,与系统的Python完全分离。

  1. 使用标有3.7.3-拉伸或3.7.3-苗条拉伸(Debian)的Python官方图像
票数 4
EN

Stack Overflow用户

发布于 2019-10-25 16:55:08

如果有人同意安装Python3.6作为一个副作用(python3.7-distutils介绍它,如OP所指出的)。这将安装Python3.7,使其成为默认值,并使用python3.7安装拥有最新可用的pip

代码语言:javascript
复制
FROM ubuntu:18.04

# Upgrade installed packages
RUN apt-get update && apt-get upgrade -y && apt-get clean

# (...)

# Python package management and basic dependencies
RUN apt-get install -y curl python3.7 python3.7-dev python3.7-distutils

# Register the version in alternatives
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1

# Set python 3 as the default python
RUN update-alternatives --set python /usr/bin/python3.7

# Upgrade pip to latest version
RUN curl -s https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \
    python get-pip.py --force-reinstall && \
    rm get-pip.py


# (...)
票数 25
EN

Stack Overflow用户

发布于 2021-04-08 16:09:05

@donhector的解决方案有两个微妙的问题:

  1. 它将只安装过时的Python版本3.7.5。您需要回购ppa:deadsnakes来获得更新的版本。
  2. 通过为python安装替代程序,它打破了用于Python2.x的python的约定。这可能会损坏,请参阅How to update-alternatives to Python 3 without breaking apt?

没有这些问题的解决办法是:

代码语言:javascript
复制
FROM ubuntu:18.04

# Upgrade installed packages
RUN apt update && apt upgrade -y && apt clean

# install python 3.7.10 (or newer)
RUN apt update && \
    apt install --no-install-recommends -y build-essential software-properties-common && \
    add-apt-repository -y ppa:deadsnakes/ppa && \
    apt install --no-install-recommends -y python3.7 python3.7-dev python3.7-distutils && \
    apt clean && rm -rf /var/lib/apt/lists/*

# Register the version in alternatives (and set higher priority to 3.7)
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2

# Upgrade pip to latest version
RUN curl -s https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \
    python3 get-pip.py --force-reinstall && \
    rm get-pip.py
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56135497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档