253 votes

Comment installer des paquets hors ligne ?

Quelle est la meilleure façon de télécharger un paquet python et ses dépendances depuis pypi pour l'installer hors ligne sur une autre machine ? Existe-t-il un moyen simple de le faire avec pip ou easy_install ? J'essaie d'installer la bibliothèque requests sur une machine FreeBSD qui n'est pas connectée à Internet.

407voto

Carl Meyer Points 30736

Sur le système qui a accès à l'internet

Le tuyau download vous permet de télécharger des paquets sans les installer :

pip download -r requirements.txt

(Dans les versions précédentes de pip, cela s'écrivait pip install --download -r requirements.txt .)

Sur le système qui n'a pas accès à l'internet

Vous pouvez alors utiliser

pip install --no-index --find-links /path/to/download/dir/ -r requirements.txt

pour installer ces modules téléchargés, sans accéder au réseau.

155voto

chaokunyang Points 1251

Si vous voulez installer les librairies python et leurs dépendances hors ligne, finissez de suivre ces étapes sur une machine avec le même OS, le même réseau connecté et python installé :

1) Créer un requirements.txt avec un contenu similaire (Note - ce sont les bibliothèques que vous souhaitez télécharger) :

Flask==0.12
requests>=2.7.0
scikit-learn==0.19.1
numpy==1.14.3
pandas==0.22.0

Une option pour créer le fichier d'exigences est d'utiliser pip freeze > requirements.txt . Cela donnera la liste de toutes les bibliothèques de votre environnement. Vous pouvez ensuite aller dans requirements.txt et supprimer ceux qui ne sont pas nécessaires.

2) Exécuter la commande mkdir wheelhouse && pip download -r requirements.txt -d wheelhouse pour télécharger les librairies et leurs dépendances dans le répertoire wheelhouse

3) Copiez le fichier requirements.txt dans wheelhouse répertoire

4) Archiver la timonerie dans wheelhouse.tar.gz con tar -zcf wheelhouse.tar.gz wheelhouse

Puis téléchargez wheelhouse.tar.gz sur votre machine cible :

1) Exécuter tar -zxf wheelhouse.tar.gz pour extraire les fichiers

2) Exécuter pip install -r wheelhouse/requirements.txt --no-index --find-links wheelhouse pour installer les librairies et leurs dépendances

84voto

Pavel Repin Points 13751

Si le paquet est sur PYPI, téléchargez-le et ses dépendances dans un répertoire local. Par exemple

$ mkdir /pypi && cd /pypi
$ ls -la
  -rw-r--r--   1 pavel  staff   237954 Apr 19 11:31 Flask-WTF-0.6.tar.gz
  -rw-r--r--   1 pavel  staff   389741 Feb 22 17:10 Jinja2-2.6.tar.gz
  -rw-r--r--   1 pavel  staff    70305 Apr 11 00:28 MySQL-python-1.2.3.tar.gz
  -rw-r--r--   1 pavel  staff  2597214 Apr 10 18:26 SQLAlchemy-0.7.6.tar.gz
  -rw-r--r--   1 pavel  staff  1108056 Feb 22 17:10 Werkzeug-0.8.2.tar.gz
  -rw-r--r--   1 pavel  staff   488207 Apr 10 18:26 boto-2.3.0.tar.gz
  -rw-r--r--   1 pavel  staff   490192 Apr 16 12:00 flask-0.9-dev-2a6c80a.tar.gz

Certains paquets doivent être archivés à la main dans des tarballs de même apparence. Je le fais souvent quand je veux une version plus récente (moins stable) de quelque chose. Certains paquets ne sont pas sur PYPI, donc la même chose s'applique à eux.

Supposons que vous ayez une application Python correctement formée dans ~/src/myapp . ~/src/myapp/setup.py aura install_requires liste qui mentionne une ou plusieurs choses que vous avez dans votre /pypi répertoire. Comme ceci :

  install_requires=[
    'boto',
    'Flask',
    'Werkzeug',
    # and so on

Si vous voulez être en mesure d'exécuter votre application avec toutes les dépendances nécessaires tout en continuant à la modifier, vous ferez quelque chose comme ceci :

$ cd ~/src/myapp
$ python setup.py develop --always-unzip --allow-hosts=None --find-links=/pypi

De cette façon, votre application sera exécutée directement depuis votre répertoire source. Vous pouvez modifier certaines choses, puis relancer l'application sans rien reconstruire.

Si vous voulez installer votre application et ses dépendances dans l'environnement python actuel, vous ferez quelque chose comme ceci :

$ cd ~/src/myapp
$ easy\_install --always-unzip --allow-hosts=None --find-links=/pypi .

Dans les deux cas, la construction échouera si une ou plusieurs dépendances ne sont pas présentes dans le dossier de l'utilisateur. /pypi répertoire. Il n'essaiera pas d'installer de manière aléatoire les éléments manquants depuis Internet.

Je recommande vivement d'invoquer setup.py develop ... y easy_install ... dans le cadre d'une environnement virtuel pour éviter de contaminer votre environnement global Python. C'est (virtualenv c'est-à-dire) à peu près la voie à suivre. N'installez jamais rien dans l'environnement global de Python.

Si la machine sur laquelle vous avez construit votre application a la même architecture que la machine sur laquelle vous voulez la déployer, vous pouvez simplement mettre en archive le répertoire complet de l'environnement virtuel dans lequel vous avez installé votre application. easy_install - tout. Cependant, juste avant la mise en place de l'archive, vous devez rendre le répertoire de l'environnement virtuel relocalisable (cf. -relocalisable option). NOTE : la machine de destination doit avoir la même version de Python d'installée, et aussi toutes les dépendances basées sur le langage C que votre application peut avoir doivent être préinstallées là aussi (par exemple, si vous dépendez de LIP alors libpng, libjpeg, etc. doivent être préinstallés).

17voto

cyera Points 101

Python hors ligne. Pour ce faire, j'utilise virtualenv (environnement Python isolé).

1) installer virtualenv en ligne avec pip :

pip install virtualenv --user

ou hors ligne avec whl : allez à ceci lien téléchargez la dernière version (.whl ou tar.gz) et installez-la avec cette commande :

pip install virtualenv-15.1.0-py2.py3-none-any.whl --user

en utilisant --user vous n'avez pas besoin d'utiliser sudo pip… .

2) utiliser virtualenv

sur la machine en ligne, sélectionnez un répertoire avec le terminal cd et exécutez ce code :

python -m virtualenv myenv
cd myenv
source bin/activate
pip install Flask

après avoir installé tous les paquets, vous devez générer un fichier requirements.txt donc, pendant que votre virtualenv est actif, écrivez

pip freeze > requirements.txt

ouvrir un nouveau terminal et créer un autre env comme myenv2 .

python -m virtualenv myenv2
cd myenv2
source bin/activate
cd -
ls

maintenant vous pouvez aller dans votre dossier hors ligne où votre requirements.txt y tranferred_packages se trouvent dans ce dossier. Téléchargez les paquets avec le code suivant et mettez-les tous dans le dossier tranferred_packages dossier.

pip download -r requirements.txt

déplacez votre dossier hors ligne sur un ordinateur hors ligne, puis

python -m virtualenv myenv2
cd myenv2
source bin/activate
cd -
cd offline
pip install --no-index --find-links="./tranferred_packages" -r requirements.txt

ce qui se trouve dans le dossier hors ligne [requirements.txt , tranferred_packages {Flask-0.10.1.tar.gz, ...}].

liste de contrôle de votre paquet

pip list

note : comme nous sommes en 2017, il est préférable d'utiliser python 3. Vous pouvez créer un virtualenv python 3 avec cette commande.

virtualenv -p python3 envname

16voto

arunanshub Points 463

Laissez-moi vous expliquer le processus étape par étape :

  1. Sur un ordinateur connecté à Internet, créez un dossier.

    $ mkdir packages $ cd packages

  2. ouvrez une invite de commande ou un shell et exécutez la commande suivante :

    Supposons que le paquet que vous voulez est tensorflow

    $ pip download tensorflow

  3. Maintenant, sur l'ordinateur cible, copiez le packages et appliquer la commande suivante

    $ cd packages $ pip install 'tensorflow-xyz.whl' --no-index --find-links '.'

Notez que le tensorflow-xyz.whl doit être remplacé par le nom original du paquet requis.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X