我默认使用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
。
答案 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版本,请执行以下操作:
virtualenv
创建一个环境,您将使用不同的Python版本pip
安装Python包。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 NVM和Ruby 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上进行了测试。