故事: 我在python 2.4和其他2.6上工作的应用程序之一。我试图将python2.4的sym链接做到python,并且在ubuntu jaunty上开始出现问题。 现在我正在下载2.4的每个依赖项并使用python2.4 setup.py install安装它。依赖关系似乎无穷无尽。
问题1:我将如何告诉任何框架去使用版本如此pf python如day django使用2.6并说mjango使用2.4?像我们说的那样使用数据库databasename有点语法。问题2:是否有更优雅的方式在版本之间切换,因为我的符号隐藏是虚拟灾难?
问题3:我可以下载deb来说耐寒,让jaunty相信它适合她吗?
答案 0 :(得分:31)
使用Virtualenv。
此处有更多信息:Working with virtualenv。
使用virtualenv,您可以使用任何版本的Python为每个项目或应用程序创建一个新的虚拟python环境。然后,您可以在需要时激活适当的环境。
扩展我的回答:
您可以在计算机上安装多个版本的Python(我的机器上有2.4,2.5,2.6和3.1 - 我从源代码安装)。我使用Mac,并将我的系统Python保留为默认的OS X设置。
我使用 easy_install 来安装软件包。在ubuntu上你可以像这样得到easy_install:
sudo apt-get install python-setuptools
要安装virtualenv,请执行:
easy_install virtualenv
我倾向于为我正在处理的每个项目创建一个新的virtualenv,并且不允许它访问全局站点包。这使得所有包裹紧密结合在一起,使我能够拥有我需要的所有特定版本。
virtualenv -p python2.6 --no-site-packages ~/env/NEW_DJANGO_PROJECT
然后每当我做与该项目相关的任何事情时,我都会激活它:
source ~/env/NEW_DJANGO_PROJECT/bin/activate
如果我现在运行python,它会使用这个新的python。如果我使用easy_install,它会将内容安装到我的新虚拟环境中。
所以,virtualenv应该能够解决你所有的问题。
答案 1 :(得分:6)
Pythonbrew是一个神奇的工具。其中也可以称为Python版本管理器,类似于RVM-Ruby版本管理器,但Pythonbrew的灵感来自于Perlbrew。
Pythonbrew是一个自动在用户$ HOME中构建和安装Python的程序。
Dependencies – curl
在安装Pythonbrew之前,在机器中安装“curl”,安装curl使用终端中的以下命令,在提示时为用户提供密码。
$sudo apt-get install curl
安装curl后,立即安装Pythonbrew,在终端中复制并粘贴以下命令,并在出现提示时键入用户的密码。
推荐的安装方法 - 轻松安装
$ sudo easy_install pythonbrew
要完成安装,请键入以下命令
$pythonbrew_install
替代安装方法:
使用curl命令从github下载最新版本的pythonbrew。
curl -kLO http://github.com/utahta/pythonbrew/raw/master/pythonbrew-install
下载后,将“pythonbrew-install”更改为“executable”
chmod +x pythonbrew-install
然后,在终端
中运行pythonbrew-install./pythonbrew-install
现在已经在“Home Directory”
中安装了Pythonbrew,即/home/user/.pythonbrew
接下来,将以下行复制并粘贴到〜/ .bashrc
的末尾 *注意:将“user”
更改为系统中的用户名
source /home/user/.pythonbrew/etc/bashrc
多数民众赞成!关闭终端。 安装不同版本的Python的步骤:
打开一个新终端,键入以下命令或复制并粘贴它。
$pythonbrew install 2.6.6
这将安装Python 2.6.6并安装Python 2.7或Python 3.2,更改上一个命令中的版本号。
$pythonbrew install 2.7
或
$pythonbrew install 3.2
更新:如果在安装时遇到错误,请使用以下命令安装。
$pythonbrew install --force 2.7
或
$pythonbrew install --force 3.2
如何管理系统中安装的不同版本的Python
例如,如果您的系统中安装了Python 2.6.6
,Python 2.7
和Python 3.2
,则可以按如下方式在版本之间切换:
默认情况下,Python 2.6.6
将处于活动状态,为了切换到Python 2.7,请使用以下命令
$pythonbrew switch 2.7
默认的Python改为Python 2.7。
现在,要切换到Python 3.2,请更改上一个命令中的版本号。
$pythonbrew switch 3.2
使用以下命令检查或列出已安装的Python版本
$pythonbrew list
使用以下命令检查或列出要安装的可用Python版本
$pythonbrew list -k
要卸载任何已安装的Python版本(例如卸载Python 2.7),请使用以下命令。
$pythonbrew uninstall 2.7
使用以下命令更新Pythonbrew
$pythonbrew update
使用以下命令禁用Pythonbrew
并激活默认版本
$pythonbrew off
享受在单个Linux / ubuntu机器上安装多个版本的Python的经验!
答案 2 :(得分:4)
我发现http://github.com/utahta/pythonbrew比任何其他解决方案都更容易安装和使用。
只需安装它,您就可以选择以下选项:
pythonbrew install 2.7.2
pythonbrew use 2.7.2 # use 2.7.2 for a current terminal session
pythonbrew switch 2.7.2 # use 2.7.2 by default system wide
pythonbrew uninstall 2.7.2
注意:如果您使用预装了Python的基于Linux的操作系统,将系统范围切换到另一个版本可能会出错,所以要小心。
答案 3 :(得分:3)
比Virtualenv更基层的方法是两个Python版本的并排安装。
如果存在现有安装,并且您希望第二次安装到同一根路径(例如/ usr / local),请在安装时使用此目标:
make altinstall
当您的第二次安装是Python 2.6时,这将为您提供/usr/local/bin/python2.6以及旧的/ usr / local / bin / python。
在这两个版本之间切换的一种简单方法是在调用解释器的shell上使用shell别名(别名python = / usr / local / bin / python2.6)。但这不适用于子shell和she-bang调用。
答案 4 :(得分:2)
pyenv是另一位Python经理。该链接的README.md有一组很好的指令,但它们基本上是:
$ cd
$ git clone git://github.com/yyuu/pyenv.git .pyenv
然后设置$ PATH。
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
安装所需的Python版本:
$ pyenv install 2.7.8
安装完成后,您需要运行:
$ pyenv rehash
然后切换到要运行的Python版本,对于shell:
$ pyenv shell 2.7.8
答案 5 :(得分:1)
您只需使用他们需要的特定python版本运行它们。使用/usr/bin/python2.4运行mjango,使用/usr/bin/python2.6运行django。就这么简单。
“问题2:是否有更优雅的方式在版本之间切换,因为我的符号隐藏是虚拟灾难?”
是的,见上文。有两个单独的Python安装,并使用不同的版本显式运行。
“问题3:我可以下载deb来说耐寒,并让jaunty相信它适合她吗?”
这通常有效。如果没有,那是因为它具有Hardy中存在的依赖关系,并且在Jaunty中不存在,然后你就不能存在。
这是一个问题4,你没有问,但应该有。 ;)
“有没有更简单的方法来下载所有这些Python模块?”
是的,有。安装setuptools,并使用easy_install。对于那些具有C代码且需要编译的Python模块,它不会帮助您使用库依赖。但它将帮助所有其他人。 easy_install将一次性下载并安装所讨论模块的所有Python依赖项。这使得安装Python模块的速度更快。
答案 6 :(得分:0)
移至项目目录:
创建一个环境: virtualenv -p python2.7 --no-site-packages~ / env / twoseven
然后激活您的来源: source~ / env / twoseven / bin / activate