Вопрос Как установить Python 3.3?


Я загрузил Python 3.3 с официального сайта, но не знаю, как его установить.

Я использую Ubuntu 12.04


103
2018-01-18 07:59


происхождения


Почему я не могу обновлять приложения без обновления всей ОС? объясняет Зачем он недоступен. Короче: в других пакетах используется более старая версия (все еще поддерживается!). И, пожалуйста, держите свои личные мысли о том, как этот сайт работает для себя или публикует его на мета где вы можете опубликовать сообщение после того, как вы достаточно очков репутации, Но сначала: Вопросы-Ответы о том, как работает сайт. - gertvdijk


ответы:


Python 3.3 был выпущен 29 сентября 2012 года, несколько месяцев после Был выпущен Ubuntu 12.04. Он включен в Ubuntu 12.10, хотя как python3.3 пакет

Если вы хотите установить Python 3.3 на версию Ubuntu, которая не имеет его в своих репозиториях, у вас есть следующие возможности:

Использовать PPA

Существует PPA, содержащий Старые и новые версии Python поддерживаемый Феликс Круллом. Видеть Ответ Лупера Руша для инструкций по установке.

Компилировать Python из источника 

Это очень просто и позволяет вам иметь несколько версий Python без взаимодействия с системным интерпретатором python (который используется многими собственными программами Ubuntu). На моей машине dev у меня буквально десятки различных версий Python от 2.4 до 3.2, живущих счастливо в /opt,

нам нужен компилятор C и другие материалы для компиляции Python

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

Кроме того, вы можете установить псевдоним bash с именем py вместо:

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

И это все. Теперь вы можете Любые Python, даже альфа, или, скажем, иметь несколько копий Python 3.3, скомпилированных с разными настройками ... не то, что многим людям это нужно, хотя :)

Использовать pyenv

Существует программное обеспечение под названием pyenv который может помочь вам автоматизировать процедуру - то, что она по существу делает, - это скомпилировать Python из источника, установив его в ваш домашний каталог. Его цель - помочь вам управлять несколькими версиями Python.


112
2018-01-31 23:48



После установки, как бы использование эта альтернативная установка Python? Скажем, у меня есть .py файлы с #!/usr/bin/env python shebang (набор исполняемых бит), как я могу заставить их использовать эту установку в /opt/python3.3 не изменяя их всех? Или даже системно установленные. - gertvdijk
@gertvdijk: весь смысл незаменить интерпретатор по умолчанию - если вы это сделаете, то каждый Приложение python, запущенное из вашей учетной записи, будет использовать Python 3.3, включая приложения Ubuntu, такие как ect Software Center. Мы этого не хотим. Чтобы запустить сценарий, просто используйте py myscript.py (где py это символическая ссылка, которую мы создали в конце упражнения). Я также обычно использую virtualenv или buildout для своих проектов. - Sergey
@gertvdijk Вы можете поддерживать несколько python-окружений, управляемых с помощью virtualenv. - flup
@gertvdijk Знаете ли вы, что python 3.x и python 2.x несовместимы? Если бы вы указали все существующие сценарии на python 3.3, они, вероятно, сломались бы. Просто скажите новые скрипты на python как #! /opt/python3.3, и правильный интерпретатор будет рассмотрен при запуске. - Tony Martin
mkdir ~/bin ln -s /opt/python3.3/bin/python ~/bin/py не работает для меня. я нашел это /opt/python3.3/bin/python должно быть /opt/python3.3/bin/python3, но все равно py: command not found, Какие-либо предложения.


Вот что я сделал для установки Python 3.3 на Ubuntu 12.04:

  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
2018-05-03 19:52



sudo apt-get build-dep python3.2? Вы, наверное, забыли install между :) - Stam Kaly
@StamKaly: нет. build-dep это не пакет, это apt-get  глагол (как install). Это значит "установить все пакеты, необходимые для сборки запрошенных исходных пакетов (ов)" - MestreLion


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
2017-12-25 08:06



Да, это установило что-то в порядке, но как мне его вызвать? Ввод «python» дает интерпретатор methe python 2 и ввод «python3» предполагает, что он не установлен и может быть установлен из репозиториев ubuntu. - kris
Ах .. Я вижу, что исполняемый файл называется python3.3 (или pythonX.Y, для любой версии python, установленной :-) - kris
ppa: fkrull / deadsnakes архивируется. Вместо этого используйте ppa: deadsnakes / ppa. - codefool


Ubuntu 14.04 и ранее:

Python2.7 приходит по умолчанию. Используйте диспетчер пакетов для установки python3 поверх обычного python на Ubuntu, 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 недоступен, если вы специально не устанавливаете.

Три названия пакетов на выбор: python, python-minimal, python-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

9
2017-11-12 07:49



Как вы обновляете версию python3 с 3.2.3 до 3.3.5? - anon58192932
Python 3.3 доступен только из репозиториев по умолчанию в Ubuntu 12.10 и более поздних версиях. OP использует 12.04 - Lenna
Если вы хотите, чтобы на одном компьютере было доступно более двух версий python (кроме параметров по умолчанию 2.7 и 3.2 по умолчанию для вашей ОС), каждая новая версия python должна находиться в собственной виртуальной среде (virtualenv). Поиск в Google: «Используйте virtualenv для изоляции версии python». Если вы не используете какой-то контейнер, тогда вы подвергаете себя лабиринтам проблем, так как python берет гигантское дерьмо на всем компьютере, занимая каждый уголок и треск, и они сражаются друг с другом в моде Джона Клесейна. - Eric Leschinski


Для всех, кто заинтересован, я написал более подробную пошаговую статью о том, как установить Python 3.3.2 локально из источника на Ubuntu 12.04, в основном на основе превосходного ответа на чтение @ sergey: http://nicholsonjf.com/blog/install-python3-locally-from-source


1
2017-09-14 10:13





Я написал сценарий для автоматизации всей загрузки, компиляции и установки непакетных версий Python. Скрипт устанавливает версию Python в /opt безопасно от диспетчера пакетов и системных версий 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 <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
2018-01-24 06:24





Предупреждение: 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
2017-09-03 05:51





Вот шаги, которые я выполнил:

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