2011-03-08 83 views
73

Tôi mới dùng Python và đang làm việc trên máy Linux (Ubuntu 10.10). Nó đang chạy python 2.6, nhưng tôi muốn chạy 2.7 vì nó có các tính năng tôi muốn sử dụng. Tôi đã được khuyến khích không cài đặt 2.7 và thiết lập đó là python mặc định của tôi.Python 2.7 trên Ubuntu

Câu hỏi của tôi là, làm thế nào tôi có thể cài đặt 2,7 và chạy cạnh nhau với 2,6?

Trả lời

1

Chỉ cần tải xuống Python 2.7 từ http://www.python.org/download/releases/2.7.1/ và tạo.

+1

cảm ơn. Tôi có phần đó, nhưng câu hỏi của tôi là nhiều hơn về cách chuyển đổi qua lại giữa hai phiên bản. Với ruby ​​tôi sử dụng RVM để quản lý nhiều phiên bản Ruby. Có tương đương với Python hay không cần thiết? – jimdolan

+11

Nhưng sử dụng "make altinstall" thay vì "make install". "make install" sẽ định cấu hình 2.7 là phiên bản mặc định và bạn không muốn điều đó. "làm cho altinstall" sẽ để lại hệ thống Python một mình và bạn sẽ chỉ cần sử dụng "python2.7" để gọi nó. – casevh

+0

Vâng, làm cho altinstall là con đường để đi. – codeape

109

Tôi đã làm điều đó với pythonbrew trên máy tính Ubuntu 10.10 của mình.

$ 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.

+2

dòng nào. $ HOME/.pythonbrew/etc/bashrc làm gì? – bharal

+0

cũng có, tôi không nên thiết lập pythonbrew để luôn luôn có thể sử dụng được? không có nghĩa là tôi cần ... um, làm gì đó? nếu tôi đăng xuất và đăng nhập lại, con trăn của tôi sẽ bị lãng quên. tôi nghĩ rằng dòng trên có một cái gì đó để làm với nó ... nhưng những gì? – bharal

+0

Bạn nói đúng, dòng đó thiết lập pythonbrew bằng cách chạy tất cả các lệnh trong tệp đó. Chỉ cần thêm dòng đó vào tệp .bashrc của bạn để nó xảy ra mọi lúc. – oylenshpeegul

1

Bạn có thể sử dụng virtualenv để tạo môi trường Python riêng biệt. Chỉ là tin tức, nhưng Python 2.7 có những gì bạn cần?

+2

Tôi muốn làm việc với argparse. Tôi là tin tức python, nhưng không phải là tin tức dev;) – jimdolan

+1

cờ trên các cụm từ thông dụng! – Nils

+0

Cờ là khoảng trước 2.7, AFAIK. – Tom

5

Vâng, nếu điều duy nhất bạn cần là argparse (thấy trong một trong những ý kiến ​​của bạn!) Bạn chỉ có thể làm:

pip install argparse 

Đây không phải là chính xác một câu trả lời cho câu hỏi chính xác :-), nhưng thực sự nếu bạn chỉ thiếu một vài tính năng, nhiều tính năng 2.7 thực sự đến từ các dự án độc lập và/hoặc một số gói tương thích có thể được tìm thấy, ví dụ:

Danh sách các 2.7 novelties là phải thừa nhận là lâu hơn, nhưng hầu hết các tính năng mới khác có lẽ không phải là một bỏ lỡ lớn, và đổi lại bạn không lộn xộn xung quanh với nhiều cài đặt python trên hộp của bạn. Nếu không, hãy đi với pythonbrew :-)

10

Gần đây tôi đã backported Python 2.7 thành Debian squeeze. Vì Ubuntu 10.10 mới hơn Debian squeeze, nếu bạn có thể làm điều đó trên squeeze, bạn chắc chắn có thể làm điều đó trên Ubuntu. Tôi không có quyền truy cập vào hệ thống Ubuntu 10.10. Nếu tôi thiết lập một, tôi sẽ kiểm tra nó, và cập nhật câu trả lời này. Vì vậy, ở đây thay vào đó là một bản phác thảo ngắn gọn về những gì tôi đã làm trên Debian.

Đầu tiên, một nhận xét chung và rõ ràng, nhưng có thể dễ dàng bị bỏ qua. Người ta không nên lấy phụ thuộc xây dựng được liệt kê của một gói Debian quá nghiêm túc. Chúng có thể đặc biệt hơn cần thiết. Ví dụ, phần mềm như Python, được thiết kế để di động và chạy trên một loạt các hệ thống, khó có khả năng xây dựng phụ thuộc vào các phiên bản phần mềm rất cụ thể. Các phụ thuộc thời gian chạy có thể được điều chỉnh là tốt, nhưng điều này nên được thực hiện cẩn thận hơn. Tuy nhiên, các phụ thuộc thời gian chạy chủ yếu được tạo động dựa trên phần mềm đã có trên hệ thống này, vì vậy thường thì đó không phải là vấn đề lớn.

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 

Lựa chọn phiên bản thử nghiệm chúng tôi nhận

apt-get source python2.7=2.7.2-8 

Nhìn vào debian/control, chúng ta thấy xây dựng các tuyến phụ thuộc như sau.

Xây dựng-phụ thuộc: 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], ngôn ngữ [! Armel! Avr32! Hppa! Ia64! Mipsel], libsqlite3-dev, libffi-dev (> = 3.0.5), mime-support, libgpm2 [linux-any], netbase, lsb-release, bzip2, libdb4.8-dev, gdb, python, help2man Build-Depends-Indep: python-sphinx Xây dựng -Cấu hình: tcl8.3-dev, tk8.3-dev, tcl8.4-dev, tk8.4-dev, python2.7-xml, python-xml, autoconf2.13, libncurses5-dev

Hầu hết điều này có thể dễ dàng thỏa mãn khi vắt. Với các tiện ích tiện dụng apt-show-versions chúng tôi nhận được trên máy tính của tôi

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 

Chúng ta thấy rằng tất cả mọi thứ trừ libtinfo-dev có sẵn trong bóp. Tôi có các phiên bản backport squeeze của debhelperpython-sphinx, nhưng cả hai phiên bản này đều có sẵn để gỡ lỗi debian trong các phiên bản thỏa mãn các yêu cầu xây dựng.

Quan sát cũng rằng tôi có gói libncurses5-dev cài đặt

apt-show-versions libncurses5-dev 

libncurses5-dev/squeeze uptodate 5.7+20100313-5 

Cả hai gói tương ứng với nguồn gói curses 5.7+20100313-5. Quan sát rằng libtinfo-dev thực tế thay thế libncurses5-dev.

apt-cache show libtinfo-dev 

Package: libtinfo-dev 
Source: ncurses 
Version: 5.9-4 
Installed-Size: 279 
Maintainer: Craig Small <[email protected]> 
Architecture: i386 
Replaces: libncurses5-dev (<< 5.9-3) 
Depends: libtinfo5 (= 5.9-4) 

Người ta sẽ không ngờ python 2.7 phát triển trên phiên bản cụ thể của lời nguyền, và thực tế là không. Tuy nhiên, nếu bạn cố gắng xây dựng các gói mà không thỏa mãn sự phụ thuộc, bạn nhận được

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. 

Vì vậy, cần chỉnh sửa debian/control. Lưu ý rằng bạn cũng cần chỉnh sửa tệp tương tự debian/control.in, nếu không, tệp control sẽ được khôi phục không chính xác từ control.in. Điều đơn giản nhất cần làm là xóa libncurses5-dev khỏi đường dây Build-Conflictslibtinfo-dev khỏi đường Build-Depends và sau đó chạy lại debuild -uc -us . Nếu bạn đang đi để đã cài đặt gói này cùng với Python 2.6 gói trên bóp Debian mặc định tiêu chuẩn, bạn cũng cần phải loại bỏ hai dòng

Conflicts: python-profiler (<= 2.7.1-2) 
Replaces: python-profiler (<= 2.7.1-2) 

Những dòng đang có vì 2,7 bao gồm các chức năng python-profiler. Nếu 2.7 là con trăn mặc định, thì python-profiler không còn cần thiết nữa. Tuy nhiên, nếu một người đang cài đặt 2.7 dưới dạng Python không mặc định, lý do đó không áp dụng và python-profiler vẫn cần 2,6.

Điều này sẽ xây dựng thành công và dẫn đến danh sách các gói nhị phân sau đây.

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 

Cuối cùng, người ta có thể cài đặt các gói nhị phân với

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 

Đôi khi dpkg có thể là một chút khó khăn về đáp ứng phụ thuộc khi tất cả chúng đều được cài đặt cùng một lúc, vì vậy bạn có thể phải chạy apt-get -f install sau đó nếu bạn nhận được lỗi phụ thuộc, hoặc cách khác cài đặt các gói trong các nhóm nhỏ hơn.

+0

Bạn đã đóng gói cổng python-2.7-squeeze này chưa? – qMax

+0

@qMax: Tôi đã xây dựng một gói dựa trên những nhận xét này, vâng. Nhưng tôi đã không đặt nó ở nơi công cộng. –

+0

Nếu 2.7.1-8 đủ, thì sẽ dễ dàng hơn. Lấy nó từ "deb-src [... snapshot.debian.org ...] (http://snapshot.debian.org/archive/debian/20110520T212730Z/) kiểm tra chính", apt-get build-dep python2. 6, apt-get cài đặt libexpat1 libexpat-dev. Và [pbuild] (https://wiki.ubuntu.com/PbuilderHowto) nó cho squeeze như là. – alexei

3

ubuntu 12.04

phụ thuộc Install:

$ sudo apt-get install python-software-properties 

Thêm repo:

$ sudo add-apt-repository ppa:fkrull/deadsnakes 

Cập nhật chỉ số repo:

$ sudo apt-get update 

Cài đặt Python 3.3:

$ sudo apt-get install python3.3 

ubuntu 12.04> hơn

Cài đặt các phụ thuộc:

$ sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev 

Tải về và biên dịch python:

$ 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 

Một số chạm tốt đẹp để cài đặt một lệnh py bằng cách tạo ra một liên kết tượng trưng :

$ mkdir ~/bin 
$ ln -s /opt/python3.3/bin/python ~/bin/py