Quelle est la meilleure façon d'installer les paquets Python?

35

Quelle est la meilleure façon d’installer des paquets Python dans Ubuntu 11? Je suis récemment converti à Ubuntu et je souhaite apprendre les meilleures pratiques.

Pour le contexte, je cherche à installer le paquet tweeststream, mais je ne l'ai pas vu dans mon gestionnaire de paquets Synaptic. En outre, je suis très novice en programmation, mais je peux généralement suivre les exemples de code.

    
posée Btibert3 13.01.2012 - 01:29
la source

4 réponses

26

Je pense que le meilleur moyen pour vous serait d'installer le système de packaging Python comme "python-pip". Vous pouvez l'installer avec Synaptic ou Ubuntu Software Center.

Pip vous permettra d'installer et de désinstaller facilement les packages Python, simplement en tant que pip install package . Dans votre cas, ce serait quelque chose comme ça du terminal:

sudo pip install tweeststream
    
réponse donnée zetah 13.01.2012 - 03:00
la source
31

mise à jour: 2018-08-17: depuis conda -4.4.0 utiliser conda dans activate anaconda sur toutes les plates-formes

mis à jour: 2017-03-27: PEP 513 - manylinux binaires pour PyPI

mise à jour: 2016-08-19: Option Continuum Anaconda

Ceci est en quelque sorte un duplicata de easy_install / pip ou apt-get .

Pour les paquetages Python global , utilisez le Centre de logiciels Ubuntu, apt, apt-get ou synaptic

Ubuntu utilise Python pour de nombreuses fonctions importantes, donc interférer avec Python peut corrompre votre système d'exploitation. C'est la raison principale pour laquelle je n'utilise jamais pip sur mon système Ubuntu, mais j'utilise soit le logiciel Ubuntu, soit le synaptic . , apt-get , ou le plus récent juste apt , qui tous installent par défaut les packages depuis le référentiel Ubuntu . Ces packages sont testés, généralement pré-compilés, ils s’installent donc plus rapidement et sont finalement conçus pour Ubuntu. En outre, toutes les dépendances requises sont également installées et un journal des installations est conservé afin de pouvoir les annuler. Je pense que la plupart des paquets ont des mises à jour correspondantes de Launchpad pour que vous puissiez déposer des problèmes.

Une autre raison d’utiliser les paquets Ubuntu est que, parfois, ces paquets Python portent des noms différents selon l’endroit où vous les avez téléchargés. Python-chardet est un exemple de package qui à un moment donné a été nommé une chose sur PyPI et une autre chose dans le dépôt Ubuntu. Par conséquent, faire quelque chose comme pip install requests ne réalisera pas que chardet est déjà installé sur votre système parce que la version Ubuntu porte un nom différent et installe par conséquent une nouvelle version qui corrompra votre système de manière minime .

En général, vous ne souhaitez installer que du code sécurisé sur votre système d'exploitation. Donc, vous devriez être nerveux au sujet de la saisie de $ sudo pip <anything-could-be-very-bad> .

Enfin, certaines choses sont plus faciles à installer en utilisant les paquets Ubuntu. Par exemple, si vous essayez pip install numpy d'installer numpy & amp; scipy sauf si vous avez déjà installé gfortran, atlas-dev, blas-dev et lapack-dev, vous verrez un flot continu d'erreurs de compilation. Cependant, installer numpy & amp; scipy à travers le dépôt Ubuntu est aussi simple que ...

$ sudo apt-get install python-numpy python-scipy

Vous avez de la chance, car vous utilisez Ubuntu, l'une des distributions les plus largement supportées et souvent mises à jour. Il est probable que tous les paquets Python dont vous aurez besoin se trouvent dans le référentiel Ubuntu, et probablement déjà installés sur votre ordinateur. Et tous les 6 mois, un nouveau cycle de paquets sera publié avec la dernière distribution d'Ubuntu.

Si vous êtes sûr à 100% que le paquet n’interférera en aucune façon avec votre système Ubuntu, vous pouvez l’installer en utilisant pip et Ubuntu est assez sympa pour garder ces paquets séparés des paquets de distribution en plaçant les paquets de distribution dans un dossier appelé dist-packages/ . Le dépôt Ubuntu contient à la fois pip, virtualenv et setuptools. Cependant, j'appuie la suggestion de Wojciech d'utiliser virtualenv.

Pour les projets personnels , Python utilise pip et wheel dans un virtualenv

Si vous avez besoin de la dernière version ou si le module ne se trouve pas dans le référentiel Ubuntu, lancez virtualenv et utilisez pip pour installer le package. Bien que pip et setuptools aient fusionné, OMI pip est préférable à easy-install ou distutils, car il attendra toujours que le paquet soit complètement téléchargé et construit avant de le copier dans votre système de fichiers, facilitant ainsi la mise à niveau ou la désinstallation. À bien des égards, il est similaire à apt-get, en ce sens qu'il gère généralement bien les dépendances. Cependant, vous allez gérer certaines dépendances vous-même, mais depuis PEP 513 a été adopté, il y a maintenant des fichiers binaires manylinux à l'index des paquets Python (PyPI) pour les distributions Linux populaires comme Ubuntu et Fedora . Par exemple, comme mentionné ci-dessus pour NumPy et SciPy, assurez-vous d’avoir installé gfortran, atlas-dev, blas-dev et lapack-dev à partir du dépôt Ubuntu Par exemple, NumPy et SciPy sont maintenant distribués pour Ubuntu en manylinux wheels par défaut en utilisant OpenBLAS au lieu d'ATLAS. Vous pouvez toujours les créer à partir des sources en utilisant les options pip --no-use-wheel ou --no-binary <format control> .

~$ sudo apt-get install gfortran libblas-dev liblapack-dev libatlas-dev python-virtualenv
~$ mkdir ~/.venvs
~$ virtualenv ~/.venvs/my_py_proj
~$ source ~/.venvs/my_py_proj/bin/activate
~(my_py_proj)$ pip install --no-use-wheel numpy scipy

Voir la section suivante, "Vous n'êtes pas dans sudoers ", ci-dessous pour installer des versions mises à jour de pip, setuptools, virtualenv ou wheels dans votre profil personal en utilisant le schéma d'installation --user avec pip.Vous pouvez l'utiliser pour mettre à jour pip pour votre usage personnel en tant que JF Sebastian a indiqué dans son commentaire une autre réponse . REMARQUE: le -m n'est vraiment nécessaire que sous MS Windows lors de la mise à jour de pip .

python -m pip install --user pip setuptools wheel virtualenv

Les nouvelles versions de pip mettent automatiquement en cache les roues, alors ce qui suit n’est utile que pour les anciennes versions de pip. Wheel est déjà inclus dans virtualenv depuis la version 13.0.0 , donc si votre version de virtualenv est trop vieux, vous devrez peut-être installer la roue en premier.

~(my_py_proj)$ pip install wheel  # only for virtualenv < v13.0.0
~(my_py_proj)$ pip wheel --no-use-wheel numpy scipy

Cela va créer des fichiers de roues binaires dans <cwd>/wheelhouse , utilisez -d pour spécifier un répertoire différent. Maintenant, si vous démarrez un autre virtualenv et que vous avez besoin des mêmes paquets que vous les avez déjà construits, vous pouvez les installer dans votre timonerie en utilisant pip install --find-links=<fullpath>/wheelhouse

Lisez Installation des modules Python dans la documentation Python et Obtenir des packages sur la page principale de l'index des packages Python. Aussi pip , virtualenv et roue .

Si vous n'êtes pas dans sudoers et virtualenv n'est pas installé.

Une autre option pour utiliser un environnement virtuel, ou si vous utilisez un partage Linux sans privilèges root, puis en utilisant l’installation --user ou --home=<wherever-you-want> Les schémas d'installation de Python avec distutils de Python installeront les paquets à la valeur de site.USERBASE ou à n'importe quel endroit. Les nouvelles versions de pip ont également une option --user . N'utilisez pas sudo !

pip install --user virtualenv

Si votre version Linux de pip est trop ancienne, vous pouvez passer les options d’installation à l’aide de --install-option , ce qui est utile pour transmettre des options personnalisées à certains scripts setup.py pour certains packages qui génèrent des extensions, comme la définition de PREFIX . Vous devrez peut-être simplement extraire la distribution et utiliser distutils pour installer le package à l'ancienne en tapant python setup install [options] . Lire une partie de la documentation d'installation et du distutils documentation peut aider.

Python est assez sympa pour ajouter site.USERBASE à votre PYTHONPATH avant toute autre chose, les modifications ne vous affecteront que Un emplacement populaire pour --home est ~/.local . Consultez le guide d’installation du module Python pour connaître la structure exacte des fichiers et en particulier leur emplacement. Note : si vous utilisez le schéma d'installation --home , vous devrez peut-être l'ajouter au PYTHONPATH utilisant export dans votre .bashrc , .bash_profile ou dans votre shell pour que vos packages localisés soient disponibles en Python.

Utilisez Python Anaconda Continuum pour des projets mathématiques, scientifiques, de données ou personnels

Si vous utilisez Python pour les mathématiques, la science ou les données, la très bonne option IMO est la distribution Anaconda-Python. ou la miniconda distro plus simple publiée par Anaconda, Inc. (anciennement Continuum Analytics ) . Bien que quiconque puisse tirer parti d’Anaconda pour ses projets personnels, l’installation par défaut comprend plus de 500 paquets mathématiques et scientifiques tels que NumPy, SciPy, Pandas et Matplotlib , tandis que miniconda installe uniquement Anaconda-Python et le gestionnaire d'environnement de conda. Anaconda s'installe uniquement dans votre profil personnel, ie: /home/<user>/ et modifie votre ~/.bashrc ou ~/.bash_profile pour ajouter le chemin d'accès d'Anaconda à votre $PATH personnel recommande de rechercher conda.sh dans votre ~/.bashrc , ce qui vous permet d'utiliser conda activate <env|default is base> pour démarrer anaconda - cela n'affecte que vous - votre chemin système est inchangé . Par conséquent, vous n'utilisez pas un accès root ou sudo pour utiliser Anaconda! si vous avez déjà ajouté Anaconda-Python, miniconda , ou conda à votre chemin personnel, alors vous devriez supprimer le PATH export de votre ~/.bashrc , et mettre à jour le nouvelle recommandation , votre système Python sera donc le premier.

Ceci est quelque peu similaire à l’option --user que j’ai expliquée dans la dernière section, sauf qu’elle s’applique à Python dans son ensemble et pas seulement aux paquets. Par conséquent, Anaconda est complètement séparé de votre système Python, il n'interférera pas avec votre système Python, et vous seul pouvez l'utiliser ou le modifier. Comme il installe une nouvelle version de Python et toutes ses bibliothèques, vous aurez besoin d'au moins 200 Mo d'espace, mais il est très intelligent de mettre en cache et de gérer les bibliothèques, ce qui est important pour Anaconda.

Anaconda gère un ensemble de binaires et de bibliothèques Python requis par les dépendances dans un référentiel en ligne (anciennement appelé binstar ) , et ils hébergent également des paquets d'utilisateurs en tant que "canaux" différents. Le gestionnaire de paquets utilisé par Anaconda, conda , installe par défaut les paquets d'Anaconda, mais vous pouvez signaler un "canal" différent en utilisant l'option -c .

Installez les packages avec conda comme pip :

$ conda install -c pvlib pvlib  # install pvlib pkg from pvlib channel

Mais conda peut faire beaucoup plus! Il peut également créer et gérer des environnements virtuels comme virtualenv . Par conséquent, comme Anaconda crée des environnements virtuels, le gestionnaire de packages pip peut être utilisé pour installer des packages à partir de PyPI dans un environnement Anaconda sans root ou sudo . N'utilisez pas sudo avec Anaconda! Attention! Faites attention si vous mélangez pip et conda dans un environnement Anaconda, b / c vous devrez gérer les dépendances de paquet plus soigneusement. Une autre option pour pip dans un environnement de conda est d'utiliser le canal conda-forge , mais aussi de le faire dans un conda environnement avec conda-forge comme canal par défaut. En dernier recours, si vous ne trouvez pas de paquet ailleurs que sur PyPI, envisagez d'utiliser --no-deps , puis installez manuellement les dépendances restantes à l'aide de conda .

Anaconda est également similaire à certains égards à Ruby RVM si vous connaissez cet outil. Anaconda conda vous permet également de créer des environnements virtuels avec différentes versions de Python . EG : conda create -n py35sci python==3.5.2 numpy scipy matplotlib pandas statsmodels seaborn va créer une pile scientifique / data-science en utilisant Python-3.5 dans un nouvel environnement appelé py35sci . Vous pouvez changer d'environnement en utilisant conda . Depuis conda-4.4.0, c'est différent de virtualenv qui utilise source venv/bin/activate , mais avant conda-4.4.0 les commandes conda , où même comme virtualenv et source :

# AFTER conda-4.4 
~/Projects/myproj $ conda activate py35sci

# BEFORE conda-4.4 
~/Projects/myproj $ source activate py35sci

Mais attendez plus! Anaconda peut également installer différentes langues telles que R pour la programmation statistique depuis Anaconda r canal . Vous pouvez même configurer votre propre canal pour télécharger les distributions de paquets créées pour les conda . Comme mentionné ci-dessus, conda-forge gère des builds automatisés de nombreux paquets sur PyPI au canal Anaconda de conda-forge .

Epilogue

Il existe de nombreuses options pour maintenir vos projets Python sous Linux en fonction de vos besoins et accès personnels. Cependant, si une réponse est une de ces choses, j'espère que vous n'aurez presque jamais besoin d'utiliser sudo pour installer les paquets Python . L'utilisation de sudo devrait être une odeur que quelque chose ne va pas. Vous avez été prévenu.

Bonne chance et bonne codification!

    
réponse donnée Mark Mikofski 28.03.2012 - 09:04
la source
9

Outre l’ajout de Novarchibald, il est généralement recommandé de créer un environnement virtuel pour votre projet python et d’installer des dépendances à l’intérieur. Cela vous permet de mieux contrôler les dépendances et leurs versions. Pour configurer un environnement virtuel, entrez:

virtualenv --no-site-packages --distribute my_python_project

Activez-le ensuite avec:

cd my_python_project
source bin/activate

À ce stade, tout ce que vous installez avec pip sera conservé dans cet environnement virtuel. Si vous voulez installer quelque chose globalement, vous devriez d'abord quitter virtualenv avec:

deactivate

Vous pouvez en savoir plus sur virtualenv ici .

    
réponse donnée Voitek Zylinski 20.01.2012 - 10:59
la source
4

Outre Zetah'a answer, la commande d’installation de python-pip à partir du terminal est la suivante:

sudo apt-get install python-pip
    
réponse donnée Novarchibald 20.01.2012 - 09:08
la source

Lire d'autres questions sur les étiquettes