我如何安装Python 3.3?

我从官方网站下载了Python 3.3,但不知道如何安装它。

我正在使用Ubuntu 12.04

Python 3.3已于2012年9月29日发布, Ubuntu 12.04发布几个月发布。 它作为python3.3包包含在Ubuntu 12.10中

如果要在Ubuntu版本上安装Python 3.3,而在其存储库中没有它,则可以使用以下选项:

使用PPA

有一个PPA包含由Felix Krull维护的新旧Python版本 。 有关安装说明,请参阅Luper Rouch的答案 。

从源代码编译Python

这非常简单,允许您拥有多个Python版本而不会弄乱系统python解释器(许多Ubuntu自己的程序使用它)。 在我的开发机器上,我有几十种不同的Python版本,从2.4到3.2,幸福地生活在/opt

我们需要C编译器和其他东西来编译Python

 sudo apt-get install build-essential 

需要安装SQLite库才能让Python获得SQLite支持。

 sudo apt-get install libsqlite3-dev sudo apt-get install sqlite3 # for the command-line client sudo apt-get install bzip2 libbz2-dev 

下载并编译Python:

 wget http://www.python.org/ftp/python/3.3.5/Python-3.3.5.tar.xz tar xJf ./Python-3.3.5.tar.xz cd ./Python-3.3.5 ./configure --prefix=/opt/python3.3 make && sudo make install 

通过创建符号链接来安装py命令的一些不错的方法:

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

或者,您可以安装名为py的bash别名:

 echo 'alias py="/opt/python3.3/bin/python3.3"' >> .bashrc 

就是这样。 现在你可以拥有任何 Python版本,甚至是alpha版本,或者说,可以使用不同的设置编译一些Python 3.3的副本……并不是很多人需要它:)

使用pyenv

有一个名为pyenv的软件可以帮助你自动化程序 – 它本质上做的是从源代码编译Python,将它安装在你的主目录中。 它的目标是帮助您管理多个Python版本。

以下是我在Ubuntu 12.04上安装Python 3.3所做的工作:

  1. 安装依赖项:

     sudo apt-get build-dep python3.2 sudo apt-get install libreadline-dev libncurses5-dev libssl1.0.0 tk8.5-dev zlib1g-dev liblzma-dev 
  2. 下载Python 3.3.0:

     wget http://python.org/ftp/python/3.3.0/Python-3.3.0.tgz 
  3. 提取:

     tar xvfz Python-3.3.0.tgz 
  4. 配置和安装:

     cd Python-3.3.0 ./configure --prefix=/opt/python3.3 make sudo make install 
  5. 测试它是否有效:

     /opt/python3.3/bin/python3 

你应该看到类似的东西:

 Python 3.3.0 (default, Jan 31 2013, 18:37:42) [GCC 4.6.3] on linux Type "help", "copyright", "credits" or "license" for more information. >>> 

一些有用的附加内容……您可以在家中创建虚拟环境,并根据需要激活Python 3.3。

  1. 在您的家中创建虚拟环境:

     /opt/python3.3/bin/pyvenv ~/py33 
  2. 激活virtualenv:

     source ~/py33/bin/activate 
  3. 安装分发工具:

     wget http://python-distribute.org/distribute_setup.py python distribute_setup.py 
  4. 安装点子:

     easy_install pip 
  5. 安装你想要的任何python包(即瓶子)

     pip install bottle 

请享用!

死神PPA有新旧python版本的软件包:

 sudo apt-get install python-software-properties sudo add-apt-repository ppa:deadsnakes/ppa sudo apt-get update sudo apt-get install python3.3 

Ubuntu 14.04及更早版本:

Python2.7是默认的,使用包管理器在Ubuntu上的常规python上安装python3,Ubuntu可以同时处理2.7和3.2,而不需要virtualenv:

 sudo apt-get install python3 python3 --version Python 3.2.3 python --version Python 2.2.3 

Ubuntu 18.04:

Python3默认使用操作系统,除非您专门安装,否则Python2.7不可用。

三个软件包名称可供选择: pythonpython-minimalpython-all 。 默认是最小的。 这些单词只是Ubuntu存储库的标志,包含额外的东西。 要准确查看哪些子包未包含在内,请深入查看以下子包: https : //packages.ubuntu.com/bionic/python

 sudo apt install python-minimal python --version 

或者尝试升级python3:

 sudo apt install python3-minimal python --version 

要尝试强制使用特定版本,可以尝试传递版本参数:

 sudo apt-get install python 3.3.3 

对于任何有兴趣的人,我写了一篇关于如何在Ubuntu 12.04上从源代码本地安装Python 3.3.2的详细一步一步的文章,主要是基于阅读@ sergey上面的优秀答案: http : //nicholsonjf.com/博客/安装-python3-本地从源

我编写了一个脚本来自动化所有下载,编译和安装非包Python版本。 该脚本在/opt安装Python版本,远离包管理器和Python的系统版本。

它甚至可以为大多数Ubuntu版本提取依赖项。 它应该适用于所有当前支持的Ubuntu版本(10.04,12.04,12.10和13.04),可能适用于其他版本。

我将它包含在下面,并将它也发布在我的Github存储库中 ,这是主要位置。

应该复制脚本并将其保存到文本编辑器中,例如build_python ,并使其成为可执行文件( chmod u+x build_python ),然后可以使用两个参数运行,其中第一个参数必须始终是Python分支,并且第二个参数必须始终是Python版本。

有关您要编译的版本的列表,请参阅python.org 。

以下是脚本用法的几个示例:

  1. 对于稳定版本,在检查列表后,可以运行为

     ./build_python '3.3.2' '3.3.2' 
  2. 对于开发版本,列表中的两个参数不同,它可以运行为:

     ./build_python '3.4.0' '3.4.0a1' 

脚本的主体在下面复制(这里没有语法高亮。为此,请参阅我的Github页面 :

 #!/usr/bin/env bash # by mik, aka Exactus29, https://github.com/Exactus29 # # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . ########## # a script to compile the latest stable version of Python and place in /opt (( $# == 2 )) || { printf "Please provide a version branch (eg 3.4.0) and a version release (eg 3.4.0a1) in that order.\n" printf "The official site is python.org, see the ftp server at: http://python.org/ftp/python.\n" >&2 ; exit 1; } # a splew of variables, so that just the version number can be given on the cmd line # and then then the script can do the rest, including verifying the packages using gpg # need different branch and version as sometimes the two are different, particularly for dev releases py_branch="$1" py_version="$2" shift 2 # check if install target already exists in /opt, and exit so user can decide what to do if [[ -d /opt/python-${py_version} ]]; then printf "Target directory for the build already exists, please rename or remove.\n" >&2 exit 1 else : fi # use tar.bz2 as that is what most of the older releases used, ie in case user tries to build an older release py_url="http://python.org/ftp/python/${py_branch}/Python-${py_version}.tar.bz2" py_asc="http://python.org/ftp/python/${py_branch}/Python-${py_version}.tar.bz2.asc" py_dir="$HOME/src/python_build" # checked to exist later, etc # first check if user requested file exists on server wget --spider ${py_url} >/dev/null 2>&1 (( $? > 0 )) && printf "No such version, version ${py_version} does not exist\n" >&2 && exit 1 # now very important before we do anything else, to check if asc file exists, as it doesn't for some downloads # if we don't check and it doesn't exist it causes the script to exit wget --spider ${py_asc} >/dev/null 2>&1 # set a flag re whether asc file exists, so can check later and avoid problems (( $? > 0 )) && no_asc=1 || no_asc=0 # set up more variables py_tarbz2="${py_url##*/}" (( no_asc == 0 )) && py_tarbz2_asc="${py_asc##*/}" # only set this if there is an asc file py_folder="${py_tarbz2%.*.*}" py_gpg_key="" # check other build dependencies are installed, beyond build-dep, sqlite support, readline, ncurses, build-essential dependencies_check() { local installed=() local to_be_installed=() local dependencies_list=(build-essential wget libreadline-dev libncurses5-dev libssl1.0.0 tk8.5-dev zlib1g-dev liblzma-dev libsqlite3-dev sqlite3 bzip2 libbz2-dev) for package in "${dependencies_list[@]}"; do if grep -iq '^ii' < <(dpkg -l "$package"); then installed+=("$package") else to_be_installed+=("$package") fi done 2>/dev/null if (( ${#to_be_installed[@]} > 0 )); then printf "If you have recently elevated your privileges with sudo, you will not see a " printf "prompt here, before the apt-get update and install of packages occurs.\n" sleep 2 sudo -p "We need to install some dependencies, please enter your password: " apt-get update && sudo apt-get -y install "${to_be_installed[@]}" return 0 else printf "\nNothing to install, proceeding.\n" return 0 fi } # tailor build-dep to new python version we want to build, basically either 2x or 3x versions # should work with at least lucid/precise/quantal/raring/saucy, the currently supported versions if (( ${py_branch:0:1} == 3 )) && grep -iq 'precise' /etc/lsb-release 2>/dev/null; then sudo -p "Please provide your password to install dependencies: " apt-get build-dep python3.2 && dependencies_check elif (( ${py_branch:0:1} == 3 )) && grep -Eiq '(raring|quantal|saucy)' /etc/lsb-release 2>/dev/null; then sudo -p "Please provide your password to install dependencies: " apt-get build-dep python3.3 && dependencies_check elif [[ ${py_branch:0:3} == 2.7 ]] && grep -iq 'lucid' /etc/lsb-release 2>/dev/null; then sudo -p "Please provide your password to install dependencies: " apt-get build-dep python2.6 && dependencies_check elif [[ ${py_branch:0:3} == 2.7 ]]; then sudo -p "Please provide your password to install dependencies: " apt-get build-dep python2.7 && dependencies_check else printf "\nProceeding, but make sure you have the correct build deps installed.\n\n" sleep 2 fi # dir checks if [[ -d $HOME/src ]]; then cd $HOME/src || exit 1 else mkdir $HOME/src && cd $HOME/src fi if [[ -d ${py_dir} ]]; then mv "${py_dir}" "${py_dir}_old_$(date '+%F_%H_%M_%S')" mkdir "${py_dir##*/}" && cd "${py_dir##*/}" else mkdir "${py_dir##*/}" && cd "${py_dir##*/}" fi # finally, download python printf "\nNow downloading version ${py_version} from branch ${py_branch} ....." wget "${py_url}" -P "${py_dir}" >/dev/null 2>&1 (( $? == 0 )) && printf "Done.\n" # only download asc if it exists, set flag earlier (( no_asc == 0 )) && wget "${py_asc}" -P "${py_dir}" >/dev/null 2>&1 # gpg tests gpg_test() { # if error returned, extract gpg key from error message py_gpg_key="$(gpg --verify "${py_tarbz2_asc}" "${py_tarbz2}" 2>&1 | awk '{ print $NF }' | grep -v found)" # now check with gpg_key (should be Python release signing key) printf "\nReceiving keys.. " gpg --recv-keys "${py_gpg_key}" >/dev/null 2>&1 (( $? > 0)) && printf "Key could not be received\n" || printf "Done.\n" printf "\nVerifying download... " gpg --verify "${py_tarbz2_asc}" "${py_tarbz2}" >/dev/null 2>&1 (( $? > 0 )) && printf "The download could not be verified.\n" || printf "Done.\n" } if (( no_asc == 0 )); then gpg --verify "${py_tarbz2_asc}" "${py_tarbz2}" >/dev/null 2>&1 if (( $? > 0 )); then gpg_test else printf "\nDownload verified\n\n" fi else printf "\nProceeding even though asc file is not available for gpg to verify download\n\n" sleep 1 fi # unpack and cd to the python folder printf "Unpacking archive...." tar xvjf "${py_folder}.tar.bz2" >/dev/null 2>&1 (( $? == 0 )) && printf "Done.\n" || { printf "Problems occured when unpacking, exiting\n" >&2; exit 1; } cd "${py_folder}" || exit 1 # tailor the build to your machine here with configure and make printf "\nNow for the configure (default prefix is /opt/python-${py_version})...." sleep 2 ./configure --prefix=/opt/python-${py_version} >/dev/null 2>&1 # as configure and make will exit anyway on error, no need to add || alternatives to the tests below (( $? == 0 )) && printf "Done.\n\n" sleep 1 printf "\nNow for the compile. (If necessary, please add your own specifications to the make command line and run the script again)\n" printf "\nPlease wait for the compile to finish: it may take a while...." make >/dev/null 2>&1 (( $? == 0 )) && printf "Done.\n\n" printf "\nWe are installing with make install into /opt, instead of using checkinstall.\n" sudo make install >/dev/null 2>&1 installcode=$? (( $installcode == 0 )) && printf "\n${py_version} succesfully installed in /opt/python-${py_version}\n\n" if [[ -d $HOME/bin ]]; then ln -s /opt/python-${py_version}/bin/python${py_version:0:3} ~/bin/py-${py_version} (( $? == 0 )) && printf "\nSymlink created, run py-${py_version} in the terminal to launch the interpreter\n" else mkdir $HOME/bin && ln -s /opt/python-${py_version}/bin/python${py_version:0:3} ~/bin/py-${py_version} (( $? == 0 )) && printf "\nSymlink created, run py-${py_version} in the terminal to launch the interpreter\n" printf "\nHowever, you will not be able to call py-${py_version} until you have logged out and in again, as bin will not" printf " have been added to your path just as $HOME/bin is created.\nn" fi # important info re setting up pyvenv re distribute tools and pip etc cat < 

警告 :已弃用Pythonbrew以支持pyenv。 更新的说明在这里

你也可以使用像pythonbrew这样的东西 :

 curl -kL http://xrl.us/pythonbrewinstall | bash echo "[[ -s $HOME/.pythonbrew/etc/bashrc ]] && source $HOME/.pythonbrew/etc/bashrc" >> ~/.bashrc pythonbrew install 3.3 

它非常容易使用,另一个好处是,可以安装所需的任何python版本。 有关模式详细信息,请参阅其文档

以下是我遵循的步骤:

 wget http://python.org/ftp/python/3.3.2/Python-3.3.2.tar.bz2 tar -xvjf ./Python-3.3.2.tar.bz2 cd ./Python-3.3.2 ./configure --prefix=/opt/python3.3 make && make install mkdir ~/bin ln -s /opt/python3.3/bin/python ~/bin/py echo 'alias py="/opt/python3.3/bin/python3"' >> .bashrc