Вы можете установить Python-3.6
на Debian 8 следующим образом:
wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar xvf Python-3.6.9.tgz
cd Python-3.6.9
./configure --enable-optimizations --enable-shared
make -j8
sudo make altinstall
python3.6
Рекомендуется использовать make altinstall
согласно официальному сайту.
Если вы хотите, чтобы pip
был включен, вам нужно добавить --with-ensurepip=install
в вызов configure. Более подробную информацию смотрите в ./configure --help
.
Предупреждение:
make install
может перезаписать или замаскировать двоичный файл python.make altinstall
рекомендуется вместоmake install
, поскольку он устанавливает толькоexec_prefix/bin/pythonversion
.
Некоторые пакеты должны быть установлены, чтобы избежать некоторых известных проблем, см: Общие проблемы сборки (обновлено)
Ubuntu/Debian:
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev
Альтернатива libreadline-dev:
sudo apt install libedit-dev
Fedora/CentOS/RHEL (aws ec2):
sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
openssl-devel xz xz-devel libffi-devel
Альтернатива openssl-devel:
sudo yum install compat-openssl10-devel --allowerasing
Обновление
Вы можете скачать последнюю версию python-x.y.z.tar.gz
с здесь.
Чтобы установить версию python по умолчанию и легко переключаться между ними, вам нужно обновить update-alternatives
с помощью нескольких версий python.
Допустим, вы установили python3.7
на debian stretch, используйте команду whereis python
, чтобы найти двоичный файл (*/bin/python
). например:
/usr/local/bin/python3.7
/usr/bin/python2.7
/usr/bin/python3.5
Добавьте версии python:
update-alternatives --install /usr/bin/python python /usr/local/bin/python3.7 50
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 40
update-alternatives --install /usr/bin/python python /usr/bin/python3.5 30
Версия python3. 7
с приоритетом 50
теперь ваш python по умолчанию, python -V
выведет:
Python 3.7.0b2
Для переключения между ними используйте:
update-alternatives --config python
Пример вывода:
There are 3 choices for the alternative python (providing /usr/bin/python).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/local/bin/python3.7 50 auto mode
1 /usr/bin/python2.7 40 manual mode
2 /usr/bin/python3.5 30 manual mode
3 /usr/local/bin/python3.7 50 manual mode
Press to keep the current choice[*], or type selection number:
Чтобы сценарий оболочки мог вызывать функцию, эта функция должна быть определена до ее вызова. В вашем коде этого нет.
Чтобы исправить это, переместите функцию выше цикла синтаксического анализа командной строки.
Кроме того, я бы сделал последний case
тест *)
, чтобы поймать любую необработанную опцию,(/?
никогда не будет соответствовать одному символу опции ). И утилита getopts
уже выдаст сообщение об ошибке, поэтому вам не нужно повторять, что($OPTARG
может быть не тем, что вы используете здесь, а$opt
).