首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ubuntu上的Python 2.7

Ubuntu上的Python 2.7
EN

Stack Overflow用户
提问于 2011-03-08 22:07:16
回答 5查看 57.8K关注 0票数 72

我是Python的新手,正在Linux机器(Ubuntu 10.10)上工作。它运行的是python2.6,但我想运行2.7,因为它有我想使用的特性。我一直被要求不要安装2.7,并将其设置为我的默认python。

我的问题是,如何安装2.7并与2.6并行运行?

EN

回答 5

Stack Overflow用户

发布于 2011-03-08 22:16:22

我在我的Ubuntu10.10机器上用pythonbrew做到了这一点。

代码语言:javascript
复制
$ python -V
Python 2.6.6
$ curl -kL https://raw.github.com/utahta/pythonbrew/master/pythonbrew-install | bash
$ . $HOME/.pythonbrew/etc/bashrc
$ pythonbrew install 2.7.1
$ pythonbrew switch 2.7.1
Switched to Python-2.7.1
$ python -V
Python 2.7.1

I also used it to install Python 3.2

票数 108
EN

Stack Overflow用户

发布于 2012-01-20 02:54:47

我最近将Python 2.7移植到了Debian squeeze。由于Ubuntu 10.10比Debian squeeze更新,如果你可以在squeeze上做,你当然也可以在Ubuntu上做。我不能使用Ubuntu 10.10系统。如果我设置了一个,我将对其进行测试,并更新此答案。所以,这里是我在Debian上所做的一个简短的草图。

首先,是一个普遍而明显的评论,但很容易被忽视。人们不应该过于认真地对待Debian包列出的构建依赖项。它们可能比所需的更具体。例如,像Python这样的软件,它被设计为可移植并在广泛的系统上运行,不太可能依赖于非常特定的软件版本。运行时依赖关系也可以调整,但这应该更加谨慎。但是,运行时依赖关系主要是基于此系统上已有的软件动态生成的,因此通常这不是一个大问题。

代码语言:javascript
复制
apt-cache policy python2.7
python2.7:
  Installed: 2.7.2-8
  Candidate: 2.7.2-8
  Version table:
     2.7.2-12 0
         50 http://debian.csail.mit.edu/debian/ unstable/main i386 Packages
     2.7.2-8 0
         50 http://debian.csail.mit.edu/debian/ testing/main i386 Packages
 *** 2.7.2-8 0
        100 /var/lib/dpkg/status

选择我们得到的测试版本

代码语言:javascript
复制
apt-get source python2.7=2.7.2-8

查看debian/control,我们可以看到以下构建依赖项行。

构建依赖: debhelper (>= 5)、quilt、autoconf、libreadline-dev、libtinfo-dev、libncursesw5-dev (>= 5.3)、tk8.5-dev、zlib1g-dev、blt-dev (>= 2.4z)、libssl-dev、libexpat1-dev、sharutils、libbz2-dev、libbluetooth-dev linux-any、locales !armel !avr32 !hppa !ia64 !mipsel、libsqlite3-dev、libffi-dev (>= 3.0.5)、mime支持、libgpm2 -any、netbase、lsb-release、bzip2、libdb4.8-dev、gdb、python、help2man构建依赖索引: python-sphinx构建冲突: tcl8.3-dev,tk8.3-dev,tcl8.4-dev,tk8.4-dev,python2.7-xml,python-xml,autoconf2.13,libncurse5-dev

这其中的大部分很容易在squeeze上得到满足。使用方便的实用程序apt-show-versions,我们可以在我的机器上获得

代码语言:javascript
复制
apt-show-versions debhelper quilt autoconf libreadline-dev libtinfo-dev libncursesw5-dev tk8.5-dev zlib1g-dev blt-dev \
libssl-dev libexpat1-dev sharutils libbz2-dev libbluetooth-dev locales libsqlite3-dev \
libffi-dev mime-support libgpm2 netbase lsb-release bzip2 libdb4.8-dev gdb python help2man python-sphinx

autoconf/squeeze uptodate 2.67-2
blt-dev/squeeze uptodate 2.4z-4.2
bzip2/squeeze uptodate 1.0.5-6
debhelper/squeeze-backports uptodate 8.9.13~bpo60+1
gdb/squeeze uptodate 7.0.1-2+b1
help2man/squeeze uptodate 1.38.2
libbluetooth-dev/squeeze uptodate 4.66-3
libbz2-dev/squeeze uptodate 1.0.5-6
libdb4.8-dev/squeeze uptodate 4.8.30-2
libexpat1-dev/squeeze uptodate 2.0.1-7
libffi-dev/squeeze uptodate 3.0.9-3
libgpm2/squeeze uptodate 1.20.4-3.3
libncursesw5-dev/squeeze uptodate 5.7+20100313-5
libreadline-dev/squeeze uptodate 6.1-3
libsqlite3-dev/squeeze uptodate 3.7.3-1
libssl-dev/squeeze uptodate 0.9.8o-4squeeze5
libtinfo-dev not installed
locales/squeeze uptodate 2.11.2-10
lsb-release/squeeze uptodate 3.2-23.2squeeze1
mime-support/squeeze uptodate 3.48-1
netbase/squeeze uptodate 4.45
python/squeeze uptodate 2.6.6-3+squeeze6
python-sphinx/squeeze-backports uptodate 1.0.8+dfsg-2~bpo60+1
quilt/squeeze uptodate 0.48-7
sharutils/squeeze uptodate 1:4.9-1
tk8.5-dev/squeeze uptodate 8.5.8-1
zlib1g-dev/squeeze uptodate 1:1.2.3.4.dfsg-3

我们看到除了libtinfo-dev之外的所有东西都可以在squeeze中使用。我确实有debhelperpython-sphinx的squeeze后端口版本,但在满足构建需求的版本中,这两个版本也可用于debian squeeze。

还可以看到,我安装了libncurses5-dev

代码语言:javascript
复制
apt-show-versions libncurses5-dev

libncurses5-dev/squeeze uptodate 5.7+20100313-5

这两个包都对应于源包curses 5.7+20100313-5。注意到libtinfo-dev实际上取代了libncurses5-dev

代码语言:javascript
复制
apt-cache show libtinfo-dev

Package: libtinfo-dev
Source: ncurses
Version: 5.9-4
Installed-Size: 279
Maintainer: Craig Small <csmall@debian.org>
Architecture: i386
Replaces: libncurses5-dev (<< 5.9-3)
Depends: libtinfo5 (= 5.9-4)

人们不会期望python2.7在这样一个特定版本的curses上进行开发,事实上它也不是。

代码语言:javascript
复制
debuild -uc -us

dpkg-checkbuilddeps: Unmet build dependencies: libtinfo-dev
dpkg-checkbuilddeps: Build conflicts: libncurses5-dev
debuild: fatal error at line 1289:
You do not appear to have all build dependencies properly met.
You can use mk-build-deps to generate a dummy package which
Depends on all the required packages, or you can install them
manually using dpkg or apt using the error messages just above
this message.

因此,有必要对debian/control进行编辑。请注意,您还需要类似地编辑文件debian/control.in,否则将不能正确地从control.in重新生成control文件。最简单的做法就是从Build-Conflicts行中删除libncurses5-dev,从Build-Depends行中删除libtinfo-dev,然后再次运行debuild -uc -us。如果您打算在Debian squeeze上与标准的默认Python 2.6包一起安装此包,则还需要删除这两行

代码语言:javascript
复制
Conflicts: python-profiler (<= 2.7.1-2)
Replaces: python-profiler (<= 2.7.1-2)

之所以有这些行,是因为2.7包含了python-profiler功能。如果默认的python是2.7,则不再需要python-profiler。然而,如果将2.7安装为非默认Python,那么这种推理就不适用了,2.6版本仍然需要python-profiler

这应该会成功构建,并生成以下二进制包列表。

代码语言:javascript
复制
ls -lah *.deb

-rw-r--r-- 1 faheem staff 289K Jan 12 02:33 idle-python2.7_2.7.2-8_all.deb
-rw-r--r-- 1 faheem staff 1.1M Jan 12 02:34 libpython2.7_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff 2.5M Jan 12 02:34 python2.7_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff  12M Jan 12 02:34 python2.7-dbg_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff 4.9M Jan 12 02:34 python2.7-dev_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff 6.0M Jan 12 02:33 python2.7-doc_2.7.2-8_all.deb
-rw-r--r-- 1 faheem staff 692K Jan 12 02:33 python2.7-examples_2.7.2-8_all.deb
-rw-r--r-- 1 faheem staff 1.7M Jan 12 02:34 python2.7-minimal_2.7.2-8_i386.deb

最后,可以使用以下命令安装二进制包

代码语言:javascript
复制
dpkg -i python2.7-minimal_2.7.2-8_i386.deb python2.7_2.7.2-8_i386.deb python2.7-dev_2.7.2-8_i386.deb libpython2.7_2.7.2-8_i386.deb 

有时,在一次安装所有包的情况下,dpkg在满足依赖关系方面可能有点困难,因此如果出现依赖错误,您可能必须在之后运行apt-get -f install,或者选择以较小的组安装包。

票数 10
EN

Stack Overflow用户

发布于 2013-07-15 19:11:29

ubuntu 12.04

安装依赖项:

代码语言:javascript
复制
$ sudo apt-get install python-software-properties

添加repo:

代码语言:javascript
复制
$ sudo add-apt-repository ppa:fkrull/deadsnakes

更新回购索引:

代码语言:javascript
复制
$ sudo apt-get update

安装Python 3.3:

代码语言:javascript
复制
$ sudo apt-get install python3.3

ubuntu 12.04 >更多

安装依赖项:

代码语言:javascript
复制
$ sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev

下载并编译python:

代码语言:javascript
复制
$ wget http://python.org/ftp/python/3.3.0/Python-3.3.0.tar.bz2

$ tar jxf ./Python-3.3.0.tar.bz2

$ cd ./Python-3.3.0

$ ./configure --prefix=/opt/python3.3

$ make && sudo make install

通过创建符号链接来安装py命令的一些很好的技巧:

代码语言:javascript
复制
$ mkdir ~/bin
$ ln -s /opt/python3.3/bin/python ~/bin/py
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5233536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档