不同python版本的apt-get安装

2024-04-29 08:38:21 发布

您现在位置:Python中文网/ 问答频道 /正文

默认情况下,我有带有python2.6的ubuntu 10.04。我已经安装了python2.7。

当我想安装python包时

apt-get python-<package> 

它被安装到python2.6。我怎样才能将包安装到python2.7?有什么选择吗?

我看过this,但在我的操作系统中找不到这样的目录。我已经考虑过使用easy_install-2.7,但并不是所有的包都受支持。例如python-torctl

我更感兴趣的是将python2.7与apt-get install绑定。


Tags: install目录packagegetubuntueasy情况apt
3条回答

Ubuntu10.04没有python2.7包。你必须自己建造2.7。12.04发布时,我确实读过一篇关于ubuntu发布python2.7包的文章,但我不确定存储库的位置是什么。

http://eli.thegreenplace.net/2011/10/10/installing-python-2-7-on-ubuntu/

或:

sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python2.7

https://askubuntu.com/questions/101591/install-python-2-7-2-on-ubuntu-10-04-64-bit

这个问题在网上有很多答案。

pyenv

https://github.com/pyenv/pyenv

Pyenv允许您在不使用sudo的情况下为单个用户管理多个Python版本,就像Node.js NVMRuby RVM

安装Pyenv:

curl https://pyenv.run | bash

然后添加到您的.bashrc

export PATH="${HOME}/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

查找要安装的Python版本:

pyenv install --list

安装所需的python版本:

# Increase the chances that the build will have all dependencies.
# https://github.com/pyenv/pyenv/wiki/Common-build-problems
sudo apt build-dep python3
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
  libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
  xz-utils tk-dev libffi-dev liblzma-dev python-openssl git

# Build and install a Python version from source.
pyenv install 3.8.0

列出可用的Python版本:

pyenv versions

我们现在有:

* system (set by /home/cirsan01/.pyenv/version)
  3.8.0

选择其他python版本:

pyenv global 3.8.0
python --version
python3 --version

两种输出:

Python 3.8.0

我们现在可以继续正常安装和使用软件包:

pip install cowsay
python -c 'import cowsay; cowsay.tux("Python is fun")'
cowsay 'hello'

我们可以通过以下方式确认所有设备都已在我们干净的环境中本地安装:

python -c 'import cowsay; print(cowsay.__file__)'
which cowsay

每个项目的使用情况

在上一节中,我们看到了如何在全局设置中使用pyenv。

但是,您通常希望在每个项目的基础上设置特定的python和包版本。这是怎么做的。

首先像以前一样安装所需的Python版本。

然后,在项目目录中,使用以下命令设置所需的python版本:

pyenv local 3.8.0

它创建一个包含版本字符串的文件.python-version

现在让我们为我们的项目在本地安装一个包:TODO:似乎没有好的方法:Pyenv choose virtualenv directory

现在,当有人想使用你的项目时,他们会:

pyenv local

它将Python版本设置为正确的版本。

相关线程:

在Ubuntu 18.04,pyenv 1.2.15上测试。

Python有自己的包管理工具,与Linux发行版(包括Ubuntu)的一套管理工具并行。存储库是Pypi-Python包索引,包是用^{}或easy_install脚本(Python的setuptools包的一部分)安装的。

根据经验,您不应该同时使用通过pip/setuptools安装的包和发行版可用的包(通过apt-get、yum、urpmi等),因为它们可能会发生冲突。

因此,处理这个问题的一个不太容易出错的方法是在系统中安装单独的Python—让系统附带的Python用于系统脚本等等—在这个Python上,只使用包管理器安装的包。安装其他版本的Python(甚至是相同的版本),以便与“virtualenv”一起运行-在这些其他安装上,您只能使用pip/setuptools安装。

(即使有人选择大胆地生活而不使用virtualenvs,在与系统python相同的前缀(/usr,甚至是/usr/local)上安装另一个python版本也是混淆错误和冲突的根源)。

注意,Debian和Ubuntu系统设计了一种在/usr中运行并行的官方Python的方法,并且能够同时将Python包安装到这两个Python版本。这基本上是可行的,但是它们破坏了Python的默认目录层次结构,并且一些应用程序无法以这种方式使用Python。(在Debian或Ubuntu中找到模块文件本身也是一团混乱)。因此,即使您的系统在apt-get上有多个可用的Python版本,也可以将上述方法作为建议应用。

简而言之,编译完所需版本的Python后,请执行以下操作:

  1. 使用系统的包管理器安装“python setuptools”和“python virtualenv”(不确定这些是否是实际的包名称)。
  2. 使用virtualenv创建一个环境,从中可以使用不同的Python版本
  3. 激活virtualenv,并在其上使用pip安装Python包。

Virtualenv确实提供了一个“--help”开关来帮助您,但您基本上做到了:

$ virtualenv -p <path-to-python-interpreter>  <environment-dir>
$ source <environment-dir>/bin/activate

在这里,由于环境变量的设置,使用Python的所有东西都将“看到”virtualenv中的解释器。

相关问题 更多 >