web-dev-qa-db-ja.com

Python 3.3をインストールするにはどうすればいいですか?

公式サイトからPython 3.3をダウンロードしましたが、インストール方法がわかりません。

Ubuntu 12.04を使用しています

103
gonewild

Python 3.3は、数か月間2012年9月29日にリリースされましたafter Ubuntu 12.04がリリースされました。 python3.3パッケージとしてUbuntu 12.10に含まれています

リポジトリにないPython 3.3をUbuntuバージョンにインストールする場合、次のオプションがあります。

PPAを使用する

Felix Krullによって管理されている Old and New Python versions を含むPPAがあります。インストール手順については、 Luper Rouchの答え を参照してください。

ソースからコンパイルPython

これは非常に簡単で、システムPythonインタープリター(多くのUbuntu独自プログラムで使用されます)をいじることなく、複数のpythonバージョンを持つことができます。私の開発マシンには、/optで快適に暮らす2.4から3.2までの文字通り数十の異なるPythonバージョンがあります。

pythonをコンパイルするにはCコンパイラなどが必要です

Sudo apt-get install build-essential

PythonがSQLiteをサポートするには、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

そしてこれがそれです。これでany Pythonバージョン、アルファ版、またはPython 3.3のいくつかのコピーを異なる設定でコンパイルすることができます...多くの人がそれを必要としているわけではありません:)

pyenvを使用

pyenv と呼ばれるソフトウェアがあり、手順を自動化するのに役立ちます-基本的には、ソースからPythonをコンパイルし、ホームディレクトリにインストールします。その目標は、複数のPythonバージョンの管理を支援することです。

113
Sergey

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. Pipをインストールします。

    easy_install pip
    
  5. 必要なpythonパッケージ(つまり、ボトル)をインストールします

    pip install bottle
    

楽しい!

43
Boolean

deadsnakes 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
35
Luper Rouch

Ubuntu 14.04以前:

Python2.7がデフォルトになります。パッケージマネージャーを使用して、Ubuntuの通常のpythonの上にpython3をインストールします。Ubuntuは、virtualenvなしで2.7と3.2の両方を同時に処理できます。

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

Ubuntu 18.04:

Python3はOSにデフォルトで搭載されており、特にインストールしない限りPython2.7は使用できません。

pythonpython-minimalpython-allから選択する3つのパッケージ名。デフォルトは最小です。これらの単語は、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
10
Eric Leschinski

興味のある方のために、Ubuntu 12.04のソースからPython 3.3.2をローカルにインストールする方法について、より詳細なステップバイステップの記事を書きました。 http://nicholsonjf.com/blog/install-python3-locally-from-source

1
James Nicholson

非パッケージPythonバージョンのダウンロード、コンパイル、インストールをすべて自動化するスクリプトを作成しました。このスクリプトは、Pythonバージョンを/optにインストールし、Pythonのパッケージマネージャーとシステムバージョンから安全にインストールします。

Ubuntuのほとんどのバージョンの依存関係も取得します。現在サポートされているすべてのUbuntuバージョン(10.04、12.04、12.10、および13.04)、およびおそらく他のバージョンでも動作するはずです。

以下にそれを含めて、マスターロケーションである my Github repository にも投稿しました。

スクリプトをコピーして、たとえばbuild_pythonとしてテキストエディターに保存し、実行可能(chmod u+x build_python)にしてから、2つのパラメーターで実行できます。最初のパラメーターは常にPythonブランチ、および2番目のパラメーターは常にPythonバージョンでなければなりません。

コンパイルするバージョンのリストについては、 python.org を参照してください。

スクリプトの使用例は次のとおりです。

  1. 安定版リリースでは、リストを確認した後、次のように実行できます。

    ./build_python '3.3.2' '3.3.2'
    
  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 <http://www.gnu.org/licenses/>.

##########

# a script to compile the latest stable version of Python and place in /opt

(( $# == 2 )) || { printf "Please provide a version branch (e.g. 3.4.0) and a version release (e.g. 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, i.e. 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 <<extra_info

            See also a program called pyvenv with your installation in /opt, 
            with which you can create a virtual environment and use tools
            such as pip, etc. See the official documentation at:
            http://docs.python.org/3.3/using/scripts.html#pyvenv-creating-virtual-environments

extra_info

sleep 2 
exit ${installcode}
1
user76204

警告: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バージョンをインストールできるというもう1つの利点があります。モードの詳細については、 docs をご覧ください

1

私が従った手順は次のとおりです。

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
0
Tarun