19

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

当我想安装 python 包时

apt-get python-<package> 

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

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

我对将 python2.7 与apt-get install.

4

3 回答 3

10

Python 拥有自己的包管理工具,与 Linux 发行版(包括 Ubuntu)的一套并行。存储库是 Pypi - Python 包索引,包是使用pipeasy_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,并在其上安装 Python 包pip

Virtualenv 确实有一个“--help”开关来帮助你,但你基本上是这样做的:

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

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

于 2012-06-09T12:51:28.853 回答
6

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

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

于 2012-06-09T12:31:53.617 回答
3

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

给出:

/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 上测试。

于 2019-12-10T13:12:57.887 回答