Meilleure façon d'exécuter python 3.7 sur Ubuntu 16.04 fourni avec python 3.5


18

Je voudrais éviter les rétroportages, ils semblent toujours gâcher mes paquets.

Je pensais donc que des outils comme conda / virtualenv / peut-être même que docker peuvent aider. Quelle est la façon la plus simple / la plus propre de travailler avec python 3.7 sur mon système?


1
Regardez dans pyenv
Naftuli Kay

Réponses:


33

Cela devrait vous permettre d'être opérationnel avec Python 3.7 sur 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

Ensuite, vous appelleriez simplement Python comme ceci:

python3.7 ./yourScript.py

Voici une capture d'écran de plusieurs versions de Python coexistant dans un conteneur Docker et comment elles peuvent être distinguées:

Comment appeler différentes versions de Python

Pip devrait également avoir été installé avec cette installation. Pour installer des packages, utilisez ce format:

pip3.7 --version

1
Cela fonctionne comme un charme. J'ai pu installer python3.7. la seule mise en garde est d'utiliser sudo make altinstall car l'accès au répertoire n'était pas à l'utilisateur normal. tous apt-get ont également été installés à l'aide de sudo. Merci beaucoup d'avoir partagé l'info.
Doogle

La réponse acceptée a bien fonctionné pour moi, avec une mise en garde; Je devais apt install libffi-devégalement éviter l'erreur de suivi dans l'étape altinstall (Ubuntu 16.04 LTS):python ModuleNotFoundError: No module named '_ctypes'
moshisushi

@moshisushi J'ai également rencontré ce problème lorsque je travaillais à une résolution. Pour cette raison, j'ai déjà inclus libffi-dev dans l'installation initiale.
Sn3akyP3t3

1
@Doogle Prefixed commandes avec sudo si nécessaire. Merci d'avoir fait remarquer cela. Ces étapes ont été extraites de mes étapes de construction de conteneur Docker qui supposaient l'utilisateur root.
Sn3akyP3t3

3

Je ne recommanderais pas de tripoter manuellement les installations et les chemins du code source. Utilisezpyenv et épargnez-vous la peine.

Tout ce que tu dois faire est:

  • Exécutez le programme d' pyenvinstallation
  • Suivez les instructions
  • Installez les versions de Python dont vous avez besoin
  • Choisissez la version Python que vous souhaitez utiliser pour un répertoire donné ou globalement

Par exemple, pour installer 3.7, vérifiez les versions disponibles:

pyenv install -l | grep 3.7

Exécutez ensuite:

pyenv install 3.7.1

Maintenant, vous pouvez choisir votre version Python:

pyenv global 3.7.1

Cela vous fait pythonpointer vers 3.7.1. Si vous voulez le python système, exécutez:

pyenv global system

Pour vérifier quelles versions de Python sont disponibles, exécutez pyenv versions.


0

Vous pouvez télécharger le code source depuis www.python.org, le compiler et le construire à partir du source, puis soit:

1) Ajoutez le chemin d'accès aux exécutables python à PATHet aux bibliothèques à LD_LIBRARY_PATH.

2) Faites ce que j'ai fait et compilez-le et construisez-le à partir de la source et créez des liens symboliques vers les exécutables dans /usr/bin. Vous pouvez l'appeler python37pour le distinguer de celui python 3.5qui est déjà installé.

La première méthode l'utilisera par défaut dans votre environnement alors qu'avec la seconde, vous devrez la spécifier avec la commande que vous avez utilisée pour le lien symbolique. Vous souhaiterez peut-être utiliser la deuxième méthode avant de la définir par défaut, car elle python 3.7est toujours en cours de développement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.