ฉันดาวน์โหลด Python 3.3 จากเว็บไซต์ทางการ แต่ไม่รู้จะติดตั้งอย่างไร
ฉันใช้ Ubuntu 12.04
ฉันดาวน์โหลด Python 3.3 จากเว็บไซต์ทางการ แต่ไม่รู้จะติดตั้งอย่างไร
ฉันใช้ Ubuntu 12.04
คำตอบ:
Python 3.3 ได้รับการปล่อยตัวเมื่อวันที่ 29 กันยายน 2555 หลายเดือนหลังจาก Ubuntu 12.04 ได้รับการปล่อยตัว มันรวมอยู่ใน Ubuntu 12.10 แต่เป็นpython3.3
แพ็คเกจ
หากคุณต้องการติดตั้ง Python 3.3 บน Ubuntu เวอร์ชันที่ไม่มีอยู่ในที่เก็บคุณมีตัวเลือกดังต่อไปนี้:
ใช้ PPA
มี PPA ที่มีเวอร์ชันเก่าและใหม่ใน Pythonดูแลโดย Felix Krull ดูคำตอบของ Luper Rouchสำหรับคำแนะนำในการติดตั้ง
รวบรวม Python จากแหล่งที่มา
นี่เป็นเรื่องง่ายและช่วยให้คุณมีเวอร์ชัน Python หลายรุ่นโดยไม่ต้องยุ่งกับล่ามระบบ (ซึ่งใช้โดยโปรแกรมของ Ubuntu เอง) บนเครื่อง dev ของฉันฉันมีอักษรหลายสิบรุ่นที่แตกต่างกันหลาม 2.4-3.2 /opt
มีชีวิตอยู่อย่างมีความสุขใน
เราต้องการคอมไพเลอร์ C และสิ่งอื่น ๆ เพื่อรวบรวม Python
sudo apt-get install build-essential
ต้องติดตั้ง libs 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
คำสั่งโดยการสร้าง symlink:
mkdir ~/bin
ln -s /opt/python3.3/bin/python3.3 ~/bin/py
หรือคุณสามารถติดตั้ง bash alias ที่ตั้งชื่อpy
แทน:
echo 'alias py="/opt/python3.3/bin/python3.3"' >> .bashrc
และนี่คือมัน ตอนนี้คุณสามารถมีPython เวอร์ชันใดก็ได้แม้แต่ alpha หรือพูดให้มี Python 3.3 สักสองสามตัวที่คอมไพล์ด้วยการตั้งค่าที่แตกต่างกัน ... ไม่ใช่ว่าหลายคนต้องการมัน :)
ใช้ pyenv
มีซอฟต์แวร์ที่ชื่อว่าpyenvซึ่งอาจช่วยให้คุณดำเนินการตามขั้นตอนอัตโนมัติสิ่งที่สำคัญคือการรวบรวม Python จากแหล่งที่มาติดตั้งไว้ในโฮมไดเร็กตอรี่ของคุณ เป้าหมายคือช่วยคุณจัดการ Python หลายเวอร์ชั่น
.py
ไฟล์บางไฟล์ที่มี#!/usr/bin/env python
บรรทัด shebang (ชุดบิตเรียกใช้งานได้) ฉันจะทำให้พวกเขาใช้การติดตั้งนี้/opt/python3.3
โดยไม่ต้องแก้ไขไฟล์ทั้งหมดได้อย่างไร หรือแม้แต่ระบบที่ติดตั้ง
py myscript.py
(ซึ่งpy
เป็น symlink ที่เราสร้างขึ้นในตอนท้ายของแบบฝึกหัด) ปกติแล้วฉันยังใช้ virtualenv หรือ buildout สำหรับโครงการของฉัน
นี่คือสิ่งที่ฉันทำเพื่อติดตั้ง Python 3.3 บน Ubuntu 12.04:
ติดตั้งการพึ่งพา:
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
ดาวน์โหลด Python 3.3.0:
wget http://python.org/ftp/python/3.3.0/Python-3.3.0.tgz
สารสกัดจาก:
tar xvfz Python-3.3.0.tgz
กำหนดค่าและติดตั้ง:
cd Python-3.3.0
./configure --prefix=/opt/python3.3
make
sudo make install
ทดสอบว่าทำงานหรือไม่:
/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 ตามต้องการ ..
สร้างสภาพแวดล้อมเสมือนจริงในบ้านของคุณ:
/opt/python3.3/bin/pyvenv ~/py33
เปิดใช้งาน virtualenv:
source ~/py33/bin/activate
ติดตั้งเครื่องมือกระจาย:
wget http://python-distribute.org/distribute_setup.py
python distribute_setup.py
ติดตั้ง pip:
easy_install pip
ติดตั้งแพ็กเกจหลามที่คุณต้องการ (เช่นขวด)
pip install bottle
สนุก!
sudo apt-get build-dep python3.2
? คุณอาจลืมไปinstall
ในระหว่าง :)
build-dep
ไม่ใช่แพ็คเกจ แต่เป็นapt-get
คำกริยา (เช่นinstall
) มันหมายถึง " ติดตั้งแพคเกจทั้งหมดที่จำเป็นในการสร้างแพคเกจแหล่งที่ร้องขอ "
deadsnakes PPAมีแพคเกจสำหรับเก่าและรุ่นใหม่หลาม:
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 มาเป็นค่าเริ่มต้นใช้ตัวจัดการแพ็คเกจเพื่อติดตั้ง python3 ที่ด้านบนของไพ ธ อนปกติบน 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 มาพร้อมกับ OS และ 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
virtualenv
) การค้นหาของ Google: "ใช้ virtualenv เพื่อแยกเวอร์ชันของไพ ธ อน" หากคุณไม่ได้ใช้ภาชนะบางชนิดคุณก็จะพบกับปัญหาเขาวงกตเนื่องจากงูใหญ่ใช้คอมพิวเตอร์ขนาดยักษ์อึอยู่บนคอมพิวเตอร์ของคุณครอบครองทุกซอกและซอกเล็กซอกน้อยและพวกมันต่อสู้กันในแฟชั่นของจอห์นคลีเซียน
สำหรับผู้ที่มีความสนใจฉันเขียนบทความแบบทีละขั้นตอนเกี่ยวกับวิธีการติดตั้ง Python 3.3.2 ในเครื่องจากแหล่งบน Ubuntu 12.04 โดยส่วนใหญ่อ้างอิงจากการอ่านคำตอบที่ยอดเยี่ยมของ @ sergey ด้านบน: http://nicholsonjf.com/ บล็อก / ติดตั้ง python3-ในประเทศจากแหล่งที่มา
ฉันได้เขียนสคริปต์เพื่อทำการดาวน์โหลดรวบรวมและติดตั้ง 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สำหรับรายการสำหรับรุ่นที่คุณต้องการรวบรวม
นี่คือตัวอย่างของการใช้งานสคริปต์:
สำหรับรุ่นที่เสถียรหลังจากตรวจสอบรายชื่อแล้วสามารถเรียกใช้ได้
./build_python '3.3.2' '3.3.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}
คำเตือน : 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