5

Ubuntu 14.04 от AWS поставляется с питоном 2.7.6.

Прежде чем делать что-либо еще с образом, я делаю обновление до 2.7.10, выпуская

sudo apt-get -y install build-essential checkinstall libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
mkdir -p ~/python/2.7.10
cd ~/python/2.7.10
wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz
tar xzf Python-2.7.10.tgz
cd Python-2.7.10
sudo ./configure
sudo make install
cd ~/

Я использую make install вместо sudo make altinstall потому что я хочу, чтобы он был единственным Python 2.7 в системе, по умолчанию.

Я знаю, что в документах есть предупреждение

Предупреждение: make install может перезаписывать или маскировать двоичный файл Python. Поэтому вместо make install рекомендуется make altinstall, поскольку он устанавливает только exec_prefix/bin/pythonversion.

Должен ли я придерживаться make altinstall? Как я могу сделать это моим python умолчанию тогда?

Как мне работать с другими библиотеками, такими как pip install --upgrade --force-reinstall pyopenssl , который компилирует некоторый код на C? Для того, чтобы код на C был скомпилирован, мне нужно sudo apt-get install python-dev , чтобы получить заголовки. Это предположение неверно? Я немного запутался по этому поводу, так как полагаю, что python-dev в репо основан на 2.7.6, если это имеет смысл.

Кроме того, поскольку я запускаю pip в virtualenv, при выдаче там pip install --upgrade --force-reinstall pyopenssl я получаю сообщение об OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/pyOpenSSL-0.15.1.dist-info' ошибка, наиболее вероятная из-за того, что я не запускаю sudo (но как пользователь по умолчанию), чтобы библиотека была установлена в virtualenv. Чем это вызвано? Этого не произойдет, если я не обновлюсь, но оставлю Python на 2.7.6

Последний вопрос: как только я обновлю python вручную путем компиляции, я не буду использовать пакеты python- * (apt-get python- *) в репозитории?

Заранее спасибо за помощь.

1 ответ1

1

Решил эту проблему, оставив все по умолчанию и используя Docker для всех нестандартных версий.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .