Tôi đã tải xuống Python 3.3 từ trang web chính thức nhưng không biết làm thế nào để cài đặt nó.
Tôi đang sử dụng Ubuntu 12.04
Tôi đã tải xuống Python 3.3 từ trang web chính thức nhưng không biết làm thế nào để cài đặt nó.
Tôi đang sử dụng Ubuntu 12.04
Câu trả lời:
Python 3.3 đã được phát hành vào ngày 29 tháng 9 năm 2012, vài tháng sau khi Ubuntu 12.04 được phát hành. Nó được bao gồm trong Ubuntu 12.10 mặc dù là python3.3
gói
Nếu bạn muốn cài đặt Python 3.3 trên phiên bản Ubuntu không có trong kho của nó, bạn có các tùy chọn sau:
Sử dụng PPA
Có một PPA chứa các phiên bản Python cũ và mới được duy trì bởi Felix Krull. Xem câu trả lời của Luper Rouch để biết hướng dẫn cài đặt.
Biên dịch Python từ nguồn
Điều này rất dễ dàng và cho phép bạn có nhiều phiên bản Python mà không gặp rắc rối với trình thông dịch python hệ thống (được sử dụng bởi rất nhiều chương trình riêng của Ubuntu). Trên máy dev của tôi, tôi có hàng tá phiên bản Python khác nhau từ 2.4 đến 3.2 sống hạnh phúc /opt
.
chúng ta cần trình biên dịch C và các công cụ khác để biên dịch Python
sudo apt-get install build-essential
Các lib SQLite cần được cài đặt để Python có hỗ trợ SQLite.
sudo apt-get install libsqlite3-dev
sudo apt-get install sqlite3 # for the command-line client
sudo apt-get install bzip2 libbz2-dev
Tải xuống và biên dịch 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
Một số chi tiết thú vị để cài đặt py
lệnh bằng cách tạo liên kết tượng trưng:
mkdir ~/bin
ln -s /opt/python3.3/bin/python3.3 ~/bin/py
Ngoài ra, bạn có thể cài đặt một bí danh bash có tên py
thay thế:
echo 'alias py="/opt/python3.3/bin/python3.3"' >> .bashrc
Và đây là nó. Bây giờ bạn có thể có bất kỳ phiên bản Python nào , thậm chí là bản alpha, hoặc, giả sử, có một vài bản sao Python 3.3 được biên dịch với các cài đặt khác nhau ... không phải là nhiều người cần điều đó :)
Sử dụng pyenv
Có một phần mềm gọi là pyenv có thể giúp bạn tự động hóa quy trình - những gì nó thực hiện là biên dịch Python từ nguồn, cài đặt nó trong thư mục chính của bạn. Mục tiêu của nó là giúp bạn quản lý nhiều phiên bản Python.
.py
tệp với #!/usr/bin/env python
dòng shebang (tập bit thực thi), làm cách nào để chúng sử dụng cài đặt này /opt/python3.3
mà không sửa đổi tất cả chúng? Hoặc thậm chí những người cài đặt hệ thống.
py myscript.py
(nơi py
là một liên kết tượng trưng mà chúng tôi đã tạo ở cuối bài tập). Tôi cũng thường sử dụng virtualenv hoặc buildout cho các dự án của mình.
Đây là những gì tôi đã làm để cài đặt Python 3.3 trên Ubuntu 12.04:
Cài đặt phụ thuộc:
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
Tải xuống Python 3.3.0:
wget http://python.org/ftp/python/3.3.0/Python-3.3.0.tgz
Trích xuất:
tar xvfz Python-3.3.0.tgz
Cấu hình và cài đặt:
cd Python-3.3.0
./configure --prefix=/opt/python3.3
make
sudo make install
Kiểm tra nếu nó hoạt động:
/opt/python3.3/bin/python3
Bạn sẽ thấy một cái gì đó tương tự:
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.
>>>
Một số điều bổ sung hữu ích ... bạn có thể tạo một môi trường ảo trong nhà của mình và chỉ cần kích hoạt Python 3.3 theo yêu cầu ..
Tạo một môi trường ảo trong nhà của bạn:
/opt/python3.3/bin/pyvenv ~/py33
Kích hoạt virtualenv:
source ~/py33/bin/activate
Cài đặt công cụ phân phối:
wget http://python-distribute.org/distribute_setup.py
python distribute_setup.py
Cài đặt pip:
easy_install pip
Cài đặt bất kỳ gói python nào bạn muốn (ví dụ như chai)
pip install bottle
Thưởng thức!
sudo apt-get build-dep python3.2
? Có lẽ bạn đã quên install
ở giữa :)
build-dep
không phải là một gói, nó là một apt-get
động từ (như install
). Nó có nghĩa là " cài đặt tất cả các gói cần thiết để xây dựng (các) gói nguồn được yêu cầu "
Các deadsnakes PPA có gói cho các phiên bản python cũ và mới:
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 trở về trước:
Python2.7 được mặc định, Sử dụng trình quản lý gói để cài đặt python3 trên đầu python thông thường trên Ubuntu, Ubuntu có thể xử lý cả 2.7 và 3.2 cùng lúc mà không cần virtualenv:
sudo apt-get install python3
python3 --version
Python 3.2.3
python --version
Python 2.2.3
Ubuntu 18.04:
Python3 được mặc định với HĐH và Python2.7 không khả dụng trừ khi bạn cài đặt cụ thể.
Ba tên gói để lựa chọn: python
, python-minimal
, python-all
. Mặc định là tối thiểu. Những từ này chỉ là cờ cho các kho lưu trữ Ubuntu để bao gồm các công cụ bổ sung hoặc không. Để xem chính xác các gói con là gì và không được bao gồm, hãy đi sâu vào các gói con của: https://packages.ubfox.com/bionic/python
sudo apt install python-minimal
python --version
Hoặc để thử nâng cấp python3:
sudo apt install python3-minimal
python --version
Để thử buộc một phiên bản cụ thể, bạn có thể thử truyền tham số phiên bản:
sudo apt-get install python 3.3.3
virtualenv
). Tìm kiếm trên Google: "Sử dụng virtualenv để cô lập phiên bản python". Nếu bạn không sử dụng một loại vật chứa nào đó, thì bạn sẽ phơi bày ra một mê cung các vấn đề vì trăn có một đống rác khổng lồ trên máy tính của bạn, chiếm giữ mọi ngóc ngách và chúng chiến đấu với nhau theo kiểu John Cleeseian.
Đối với bất kỳ ai quan tâm, tôi đã viết một bài viết từng bước dài hơn về cách cài đặt Python 3.3.2 cục bộ từ nguồn trên Ubuntu 12.04, chủ yếu dựa trên việc đọc câu trả lời tuyệt vời của @ sergey ở trên: http://nicholsonjf.com/ blog / install-python3-local-from-source
Tôi đã viết một tập lệnh để tự động hóa tất cả việc tải xuống, biên dịch và cài đặt các phiên bản Python không gói. Kịch bản cài đặt phiên bản Python /opt
một cách an toàn khỏi trình quản lý gói và phiên bản hệ thống của Python.
Nó thậm chí còn lấy các phụ thuộc cũng như cho hầu hết các phiên bản Ubuntu. Nó nên hoạt động trên tất cả các phiên bản Ubuntu hiện được hỗ trợ (10.04, 12.04, 12.10 và 13.04) và có thể trên các phiên bản khác.
Tôi bao gồm nó bên dưới và cũng đã đăng nó tại kho Github của tôi , đó là vị trí chính.
Tập lệnh nên được sao chép và lưu vào trình soạn thảo văn bản, ví dụ, build_python
và được thực thi ( chmod u+x build_python
) và sau đó có thể được chạy với hai tham số, trong đó tham số đầu tiên phải luôn là nhánh Python và tham số thứ hai phải luôn là Phiên bản Python.
Xem python.org để biết danh sách cho phiên bản bạn muốn biên dịch.
Dưới đây là một vài ví dụ về cách sử dụng tập lệnh:
Để phát hành ổn định, sau khi đã kiểm tra danh sách, nó có thể được chạy dưới dạng
./build_python '3.3.2' '3.3.2'
Đối với bản phát hành phát triển, trong đó hai tham số khác nhau trong danh sách, nó có thể được chạy dưới dạng:
./build_python '3.4.0' '3.4.0a1'
Phần thân của tập lệnh được sao chép bên dưới (không có cú pháp tô sáng ở đây. Để biết điều đó, hãy xem trang Github của tôi :
#!/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}
Cảnh báo : Pythonbrew đã không được ủng hộ cho pyenv. Hướng dẫn cập nhật tại đây
Ngoài ra, bạn có thể sử dụng một cái gì đó như pythonbrew :
curl -kL http://xrl.us/pythonbrewinstall | bash
echo "[[ -s $HOME/.pythonbrew/etc/bashrc ]] && source $HOME/.pythonbrew/etc/bashrc" >> ~/.bashrc
pythonbrew install 3.3
Nó khá dễ sử dụng và một lợi ích khác là có thể cài đặt bất kỳ phiên bản python nào bạn cần. Vui lòng xem tài liệu của họ để biết chi tiết chế độ
Dưới đây là các bước mà tôi đã làm theo:
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