apt-get install用于不同的python版本

时间:2012-06-09 11:59:06

标签: python linux ubuntu installation

我默认使用ubuntu 10.04和python2.6。我安装了python2.7。

当我想用

安装python包时
apt-get python-<package> 

它安装到python2.6。如何才能将软件包安装到python2.7?有什么选择吗?

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

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

3 个答案:

答案 0 :(得分:9)

Python拥有自己的软件包管理工具,与Linux发行版(包括Ubuntu)的软件集并行。存储库是Pypi-Python软件包索引,软件包随pip或easy_install脚本一起安装,该脚本是Python的setuptools软件包的一部分。

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

因此,处理它的一个不太容易出错的方法是在你的系统中安装单独的Python安装 - 保留系统脚本等系统附带的python - 在这个python上,使用安装的软件包你的包管理员。并安装其他版本的Python(甚至相同),与“virtualenv”一起运行 - 在这些其他安装上你只用pip / setuptools安装。

(即使有人选择大胆生活而不使用virtualenvs,在同一前缀(/usr,甚至/usr/local)上安装另一个python版本比系统的Python更容易让错误混淆和冲突)。

请注意,Debian和Ubuntu系统设计了一种在/ usr中运行并行官方Python的方法,并且让apt-get可以同时将Python包安装到两个Python版本中。这大部分都有效,但是它们混淆了Python的默认目录层次结构,而且有些应用程序无法以这种方式使用Python。 (在Debian或Ubuntu中查找模块文件也是一团糟)。因此,即使您的系统在apt-get上有多个Python版本,上述方法也适用于推荐。

简而言之,一旦您编译了所需的Python版本,请执行以下操作:

  1. 使用系统的包管理器安装“python-setuptools”和“python-virtualenv”(不确定这些是否是实际的包名)。
  2. 使用virtualenv创建一个环境,您将使用不同的Python版本
  3. 激活您的virtualenv,并使用pip安装Python包。
  4. Virtualenv确实有一个“ - help”开关来帮助你,但你基本上做了:

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

    你就是这样 - 由于设置了环境变量,所有使用Python的东西都会“看到”virtualenv中的解释器。

答案 1 :(得分:5)

ubuntu 10.04没有python2.7包。你必须自己建立2.7。我确实读过一篇关于ubuntu在12.04发布时发布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

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

答案 2 :(得分:0)

pyenv

https://github.com/pyenv/pyenv

Pyenv允许您为单个用户管理多个Python版本而无需sudo,就像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上进行了测试。