繁体   English   中英

不同python版本的apt-get安装

[英]apt-get install for different python versions

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

当我想安装 python 包时

apt-get python-<package> 

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

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

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

Python 有自己的包管理工具,与 Linux 发行版(包括 Ubuntu)的一套并行。 存储库是 Pypi - Python 包索引,包是使用pip或 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 的方法,并使用 apt-get 将 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 中“看到”解释器。

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

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

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__)'

给出:

/home/ciro/.pyenv/versions/3.8.0/lib/python3.8/site-packages/cowsay/__init__.py

和:

which cowsay

给出:

/home/ciro/.pyenv/shims/cowsay

和:

which python

给出:

/home/ciro/.pyenv/shims/python

每个项目使用

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

但是,您通常想要的是在每个项目的基础上设置特定的 python 和包版本。 这是如何做到的。

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

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

pyenv local 3.8.0

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

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

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

pyenv local

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

相关主题:

在 Ubuntu 18.04、pyenv 1.2.15 上测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM