切换Python版本
故事: 我有一个应用程序是用 Python 2.4 开发的,另一个是用 2.6 开发的。我尝试把 Python 2.4 做成一个符号链接(也就是让它指向 Python),结果在 Ubuntu Jaunty 上出现了一堆问题。现在我正在下载 2.4 的所有依赖项,并用 python2.4 setup.py install 来安装它们。这些依赖项似乎是无穷无尽的。
问题1:我怎么告诉某个框架,比如 Django,使用 Python 2.6,而让另一个框架 Mjango 使用 2.4?就像我们用数据库名称那样的语法。
问题2:有没有更优雅的方法来切换版本?因为我用符号链接的办法真是个虚拟灾难。
问题3:我能不能下载一个适用于 Hardy 的 deb 包,然后让 Jaunty 认为它适用于自己?
7 个回答
我发现 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系统,切换到另一个版本可能会导致一些问题,所以要小心哦。
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”改为“可执行文件”。
chmod +x pythonbrew-install
然后,在终端运行 pythonbrew-install。
./pythonbrew-install
现在,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 的体验吧!
使用 Virtualenv。
这里有更多信息: 使用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,并且不让它访问全局的site-packages。这可以把所有的包紧密地放在一起,并让我拥有所需的特定版本。
virtualenv -p python2.6 --no-site-packages ~/env/NEW_DJANGO_PROJECT
然后每当我做与这个项目相关的事情时,我就激活它:
source ~/env/NEW_DJANGO_PROJECT/bin/activate
如果我现在运行python,它就会使用这个新的Python版本。如果我使用easy_install,它会把东西安装到我的新虚拟环境里。
所以,virtualenv应该能解决你所有的问题。