Vraag Hoe installeer ik Python 3.3?


Ik heb Python 3.3 gedownload van de officiële site maar geen idee hoe ik het moet installeren.

Ik gebruik Ubuntu 12.04


103
2018-01-18 07:59


oorsprong


Waarom kan ik geen applicaties bijwerken zonder het hele besturingssysteem te upgraden? legt uit waarom het is niet beschikbaar. Kortom: andere pakketten vertrouwen op een oudere (nog steeds onderhouden!) Versie. En houd alsjeblieft je persoonlijke gedachten over hoe deze site voor jezelf werkt of plaats deze op meta waar je kunt posten als je eenmaal hebt gewonnen genoeg reputatiepunten. Maar eerst: FAQ over hoe de site werkt. - gertvdijk


antwoorden:


Python 3.3 is vrijgegeven op 29 september 2012, enkele maanden na Ubuntu 12.04 is uitgebracht. Het is echter opgenomen in Ubuntu 12.10 als python3.3 pakket

Als je Python 3.3 op Ubuntu-versie wilt installeren die het niet in zijn installatiebronnen heeft, heb je de volgende opties:

Gebruik een PPA

Er is een PPA-bevattende Oude en nieuwe Python-versies onderhouden door Felix Krull. Zien Het antwoord van Luper Rouch voor installatie-instructies.

Compileer Python van de bron 

Dit is heel eenvoudig en je kunt meerdere Python-versies gebruiken zonder te knoeien met de systeempython-interpreter (die wordt gebruikt door veel eigen Ubuntu-programma's). Op mijn dev-machine heb ik letterlijk tientallen verschillende Python-versies van 2,4 tot 3,2 die gelukkig leven /opt.

we hebben een C-compiler en andere dingen nodig om Python te compileren

sudo apt-get install build-essential

SQLite-bibliotheken moeten worden geïnstalleerd om Python ondersteuning voor SQLite te bieden.

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

Python downloaden en compileren:

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

Een paar leuke extra's om een ​​te installeren py commando door een symlink te maken:

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

Als alternatief kunt u een bash alias met de naam py in plaats daarvan:

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

En dit is het. Nu kunt u hebben ieder Python-versie, zelfs een alpha, of, laten we zeggen, om een ​​paar exemplaren van Python 3.3 te compileren met verschillende instellingen ... niet dat veel mensen dat wel nodig hebben :)

Gebruik pyenv

Er is een software genaamd pyenv wat je kan helpen om de procedure te automatiseren - wat het in wezen doet is Python compileren vanaf de bron, het installeren in je homedirectory. Het doel is om u te helpen bij het beheren van meerdere Python-versies.


112
2018-01-31 23:48



Na installatie, hoe zou een gebruik deze alternatieve Python-installatie? Zeg dat ik er een paar heb .py bestanden met de #!/usr/bin/env python shebang-regel (uitvoerbare bitreeks), hoe zou ik ervoor zorgen dat ze deze installatie gebruiken in /opt/python3.3 zonder ze allemaal te wijzigen? Of zelfs systeemgeïnstalleerde. - gertvdijk
@gertvdijk: het hele punt is nietom de standaard interpreter te vervangen - als je dat doet, dan elk Python-app die vanuit je account wordt uitgevoerd, gebruikt Python 3.3, inclusief Ubuntu-apps, zoals Software Center ect. Dat willen we niet. Gebruik gewoon een script om een ​​script uit te voeren py myscript.py (waar py is een symlink die we aan het einde van de oefening hebben gemaakt). Ik gebruik normaal ook virtualenv of buildout voor mijn projecten. - Sergey
@gertvdijk Je kunt meerdere python-omgevingen overzichtelijk houden met virtualenv. - flup
@gertvdijk Weet je dat python 3.x en python 2.x niet compatibel zijn? Als je al je bestaande scripts op Python 3.3 zou wijzen, zouden ze waarschijnlijk breken. Simply shebang uw nieuwe python-scripts als #! /opt/python3.3 en de juiste interpreter wordt geadresseerd wanneer u het uitvoert. - Tony Martin
mkdir ~/bin ln -s /opt/python3.3/bin/python ~/bin/py werkt niet voor mij. Ik vond dat /opt/python3.3/bin/python zou moeten zijn /opt/python3.3/bin/python3, maar nog steeds krijgen py: command not found. Suggesties.


Hier is wat ik deed om Python 3.3 te installeren op Ubuntu 12.04:

  1. Afhankelijkheden installeren:

    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 downloaden:

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

    tar xvfz Python-3.3.0.tgz
    
  4. Configureren en installeren:

    cd Python-3.3.0
    ./configure --prefix=/opt/python3.3
    make  
    sudo make install
    
  5. Test of het werkte:

    /opt/python3.3/bin/python3
    

Je zou iets vergelijkbaars moeten zien:

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

Enkele aanvullende dingen die handig zijn ... je kunt een virtuele omgeving in je huis creëren en Python 3.3 on demand activeren.

  1. Creëer een virtuele omgeving bij u thuis:

    /opt/python3.3/bin/pyvenv ~/py33
    
  2. Activeer de virtualenv:

    source ~/py33/bin/activate
    
  3. Installeer verdelingshulpmiddelen:

    wget http://python-distribute.org/distribute_setup.py
    python distribute_setup.py
    
  4. Installeer pip:

    easy_install pip
    
  5. Installeer alle gewenste python-pakketten (zoals een fles)

    pip install bottle
    

Genieten!


43
2018-05-03 19:52



sudo apt-get build-dep python3.2? Je bent het waarschijnlijk vergeten install tussenin :) - Stam Kaly
@StamKaly: nee. build-dep is geen pakket, het is een apt-get  werkwoord (graag willen install). Het betekent "installeer alle pakketten die nodig zijn om het gevraagde bronpakket (len) te bouwen" - MestreLion


De deadsnakes PPA heeft pakketten voor oude en nieuwe python-versies:

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



Ja, dat installeerde iets goed, maar hoe kan ik het gebruiken? Typen 'python' geeft methe python 2 interpreter en typen 'python3' suggereert dat het niet is geïnstalleerd en kan worden geïnstalleerd vanuit ubuntu repos. - kris
Ah..Ik zie dat het uitvoerbare bestand python3.3 heet (of pythonX.Y, voor welke versie van python dan ook geïnstalleerd :-) - kris
ppa: fkrull / deadsnakes is gearchiveerd. Gebruik in plaats daarvan ppa: deadsnakes / ppa. - codefool


Ubuntu 14.04 en eerder:

Python2.7 wordt standaard geleverd, gebruik de pakketbeheerder om python3 bovenop gewone python op Ubuntu te installeren, Ubuntu kan zowel 2.7 als 3.2 tegelijkertijd aan zonder een virtualenv:

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

Ubuntu 18.04:

Python3 wordt standaard meegeleverd met het besturingssysteem en Python2.7 is niet beschikbaar, tenzij je specifiek installeert.

Drie pakketnamen om uit te kiezen: python, python-minimal, python-all. Standaard is minimaal. Deze woorden zijn slechts vlaggen voor de Ubuntu-verzamelplaatsen om extra dingen toe te voegen of niet. Als u precies wilt zien welke subverpakkingen wel en niet zijn opgenomen, kunt u meer informatie krijgen over de subpakketten van: https://packages.ubuntu.com/bionic/python

sudo apt install python-minimal
python --version

Of om de python3 te upgraden:

sudo apt install python3-minimal
python --version

Als u een specifieke versie probeert te forceren, kunt u proberen een versieparameter door te geven:

sudo apt-get install python 3.3.3

9
2017-11-12 07:49



Hoe update je de python3-versie van 3.2.3 naar 3.3.5? - anon58192932
Python 3.3 is alleen beschikbaar in de standaardrepository's in Ubuntu 12.10 en hoger. OP gebruikt 12.04 - Lenna
Als je wilt dat er meer dan 2 versies van python beschikbaar zijn op één computer (anders dan de standaardinstellingen 2.7 en 3.2 die je besturingssysteem voor jou kiest), dan moet elke nieuwe versie van python zich in zijn eigen virtuele omgeving bevinden (virtualenv). Google-zoekopdracht: "Gebruik virtualenv om de versie van python te isoleren". Als je geen enkele container gebruikt, stel je jezelf bloot aan een labyrint van problemen, want Python neemt een gigantische stront over je computer, bezet elk hoekje en gaatje, en ze vechten elkaar op John Cleeseiaanse manier. - Eric Leschinski


Voor iedereen die geïnteresseerd is, schreef ik een meer uitgebreid stap-voor-stapartikel over hoe je Python 3.3.2 lokaal kunt installeren vanaf de bron op Ubuntu 12.04, meestal gebaseerd op het uitstekende antwoord van reading @ sergey hierboven: http://nicholsonjf.com/blog/install-python3-locally-from-source


1
2017-09-14 10:13





Ik heb een script geschreven om het downloaden, compileren en installeren van niet-pakket Python-versies te automatiseren. Het script installeert de Python-versie in /opt veilig weg van de pakketbeheerder en systeemversies van Python.

Het haalt zelfs de afhankelijkheden op voor de meeste versies van Ubuntu. Het zou moeten werken op alle momenteel ondersteunde Ubuntu-versies (10.04, 12.04, 12.10 en 13.04), en waarschijnlijk op andere versies.

Ik neem het hieronder op, en heb het ook gepost op mijn Github-repository, dat is de hoofdlocatie.

Het script moet worden gekopieerd en in een teksteditor worden opgeslagen, bijvoorbeeld build_pythonen uitvoerbaar gemaakt (chmod u+x build_python) en kan vervolgens worden uitgevoerd met twee parameters, waarbij de eerste parameter altijd de Python-vertakking moet zijn en de tweede parameter altijd de Python-versie moet zijn.

Zien python.org voor de vermeldingen voor de versie die u wilt compileren.

Hier zijn een paar voorbeelden van het gebruik van het script:

  1. Voor de stabiele release, na het controleren van de listings, kan deze worden uitgevoerd zoals

    ./build_python '3.3.2' '3.3.2'
    
  2. Voor de ontwikkelingsrelease, waarbij de twee parameters verschillen in de vermeldingen, kan deze worden uitgevoerd als:

    ./build_python '3.4.0' '3.4.0a1'
    

De body van het script is hieronder weergegeven (hier geen syntax highlighting. Zie daarvoor mijn Github-pagina:

#!/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





Waarschuwing: Pythonbrew is verouderd ten gunste van pyenv. Bijgewerkte instructies zijn hier

Je kunt ook zoiets gebruiken pythonbrew:

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

Het is vrij eenvoudig te gebruiken en nog een voordeel, dat het mogelijk is om elke gewenste python-versie te installeren. Zie alstublieft hun docs voor modusdetails


1
2017-09-03 05:51





Dit zijn de stappen die ik heb gevolgd:

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