Najlepszy sposób na uruchomienie Pythona 3.7 na Ubuntu 16.04, który jest wyposażony w Python 3.5

18

Chciałbym unikać backportów, zawsze wydają się zepsuć moje paczki.

Pomyślałem więc, że narzędzia takie jak conda / virtualenv / może nawet doker mogą pomóc. Jaki jest najprostszy / najczystszy sposób pracy z Pythonem 3.7 w moim systemie?

benji
źródło
1
Spójrz na pyenv
Naftuli Kay

Odpowiedzi:

33

To powinno sprawić, że zaczniesz działać z Python 3.7 na Ubuntu 16.04

# Install requirements
sudo apt-get install -y build-essential \
checkinstall \
libreadline-gplv2-dev \
libncursesw5-dev \
libssl-dev \
libsqlite3-dev \
tk-dev \
libgdbm-dev \
libc6-dev \
libbz2-dev \
zlib1g-dev \
openssl \
libffi-dev \
python3-dev \
python3-setuptools \
wget

# Prepare to build
mkdir /tmp/Python37
cd /tmp/Python37

# Pull down Python 3.7, build, and install
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
tar xvf Python-3.7.0.tar.xz
cd /tmp/Python37/Python-3.7.0
./configure
sudo make altinstall

Następnie wystarczy wywołać Python w ten sposób:

python3.7 ./yourScript.py

Oto zrzut ekranu wielu wersji Pythona współistniejących w kontenerze dokowanym i ich rozróżnienia:

Jak wywołać różne wersje Pythona

Pip powinien również zostać zainstalowany przy tej instalacji. Aby zainstalować pakiety, użyj tego formatu:

pip3.7 --version
Sn3akyP3t3
źródło
1
To działa jak urok. Byłem w stanie zainstalować Python3.7. Jedynym zastrzeżeniem jest używanie sudo make altinstall, ponieważ dostęp do katalogu nie miał zwykły użytkownik. wszystkie apt-get zostały również zainstalowane przy użyciu sudo. Wielkie dzięki za udostępnienie informacji.
Doogle,
Przyjęta odpowiedź działała dla mnie dobrze, z jednym zastrzeżeniem; Musiałem apt install libffi-devrównież uniknąć błędu obserwowania w kroku altinstall (Ubuntu 16.04 LTS):python ModuleNotFoundError: No module named '_ctypes'
moshisushi 28.08.2018
@moshisushi Zetknąłem się z tym problemem, gdy pracowałem nad rozwiązaniem. Z tego powodu już dodałem libffi-dev do pierwszej instalacji.
Sn3akyP3t3
1
@Doogle Prefiksy z sudo w razie potrzeby. Dzięki za zwrócenie na to uwagi. Kroki te zostały wyciągnięte z kroków kompilacji kontenera Docker, które zakładały użytkownika root.
Sn3akyP3t3
3

Nie polecam ręcznego manipulowania przy instalacjach i ścieżkach kodu źródłowego. Użyjpyenv i oszczędzaj sobie kłopotów.

Wszystko co musisz zrobić to:

  • Uruchom pyenvinstalatora
  • Postępuj zgodnie z instrukcją
  • Zainstaluj potrzebne wersje Pythona
  • Wybierz wersję Pythona, której chcesz używać dla danego katalogu lub globalnie

Na przykład, aby zainstalować 3.7, sprawdź, które wersje są dostępne:

pyenv install -l | grep 3.7

Następnie uruchomić:

pyenv install 3.7.1

Teraz możesz wybrać wersję Python:

pyenv global 3.7.1

Spowoduje to przejście pythondo punktu 3.7.1. Jeśli chcesz python systemowy, uruchom:

pyenv global system

Aby sprawdzić, które wersje Python są dostępne, uruchom pyenv versions.

slhck
źródło
0

Możesz pobrać kod źródłowy ze strony www.python.org, skompilować i skompilować go ze źródła, a następnie:

1) Przygotuj ścieżkę do plików wykonywalnych Pythona PATHi bibliotek do LD_LIBRARY_PATH.

2) Zrób to, co zrobiłem, skompiluj i skompiluj to ze źródła i twórz dowiązania symboliczne do plików wykonywalnych w /usr/bin. Możesz go nazwać, python37aby odróżnić go od tego, python 3.5który jest już zainstalowany.

Pierwsza metoda domyślnie użyje jej w twoim środowisku, podczas gdy przy drugiej, będziesz musiał określić ją za pomocą polecenia użytego dla dowiązania symbolicznego. Możesz najpierw użyć drugiej metody, zanim ustawisz ją jako domyślną, ponieważ python 3.7jest ona wciąż w fazie rozwoju.

Nasir Riley
źródło