Quelle est la meilleure façon de télécharger un package python et ses dépendances à partir de pypi pour une installation 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 de requêtes sur une boîte FreeBSD qui n'est pas connectée à Internet.
python
pip
freebsd
easy-install
python-requests
Chris Drantz
la source
la source
Réponses:
Si le package est sur PYPI, téléchargez-le et ses dépendances dans un répertoire local. Par exemple
Certains paquets peuvent devoir être archivés à la main dans des archives tar similaires. Je le fais souvent quand je veux une version plus récente (moins stable) de quelque chose. Certains forfaits 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 uneinstall_requires
liste qui mentionne une ou plusieurs choses que vous avez dans votre/pypi
répertoire. Ainsi:Si vous voulez pouvoir exécuter votre application avec toutes les dépendances nécessaires tout en la piratant, vous ferez quelque chose comme ceci:
De cette façon, votre application sera exécutée directement à partir de votre répertoire source. Vous pouvez pirater des choses, puis réexécuter l'application sans rien reconstruire.
Si vous souhaitez installer votre application et ses dépendances dans l'environnement python actuel, vous ferez quelque chose comme ceci:
Dans les deux cas, la construction échouera si une ou plusieurs dépendances ne sont pas présentes dans le
/pypi
répertoire. Il n'essaiera pas d'installer les éléments manquants d'Internet de manière promiscue.Je recommande fortement d'appeler
setup.py develop ...
eteasy_install ...
dans un environnement virtuel actif pour éviter de contaminer votre environnement Python global. C'est (virtualenv) à peu près la voie à suivre. N'installez jamais rien dans l'environnement Python global.Si la machine sur laquelle vous avez créé votre application a la même architecture que la machine sur laquelle vous souhaitez la déployer, vous pouvez simplement archiver l'intégralité du répertoire de l'environnement virtuel dans lequel vous avez
easy_install
tout placé. Mais juste avant la tarball, vous devez rendre le répertoire de l'environnement virtuel relocalisable (voir l' option --relocatable ). REMARQUE: la machine de destination doit avoir la même version de Python installée, et toutes les dépendances basées sur C que votre application peut avoir doivent également y être préinstallées (par exemple, si vous dépendez de PIL , libpng, libjpeg, etc. doivent être préinstallées) .la source
--allow-hosts=None
vous pouvez utiliser le commutateur--no-index
La
download
commande pip vous permet de télécharger des packages sans les installer:pip download -r requirements.txt
(Dans les versions précédentes de pip, cela était orthographié
pip install --download -r requirements.txt
.)Ensuite, vous pouvez utiliser
pip install --no-index --find-links /path/to/download/dir/ -r requirements.txt
pour installer ces sdists téléchargés, sans accéder au réseau.la source
--find-links file:/path/to/some/dir/
et vous devriez télécharger et installer avec la même version de pip - sinon cela pourrait échouerSi vous souhaitez installer les bibliothèques python et leurs dépendances hors ligne, terminez de suivre ces étapes sur une machine avec le même système d'exploitation, le même réseau connecté et python installé:
1) Créez un
requirements.txt
fichier avec un contenu similaire (Remarque - ce sont les bibliothèques que vous souhaitez télécharger):Une option pour créer le fichier d'exigences consiste à utiliser
pip freeze > requirements.txt
. Cela listera toutes les bibliothèques de votre environnement. Ensuite, vous pouvez accéderrequirements.txt
et supprimer ceux qui ne sont pas nécessaires.2) Exécutez la commande
mkdir wheelhouse && pip download -r requirements.txt -d wheelhouse
pour télécharger les bibliothèques et leurs dépendances dans le répertoirewheelhouse
3) Copiez requirements.txt dans le
wheelhouse
répertoire4) Archiver la timonerie
wheelhouse.tar.gz
avectar -zcf wheelhouse.tar.gz wheelhouse
Ensuite, téléchargez
wheelhouse.tar.gz
sur votre machine cible:1) Exécutez
tar -zxf wheelhouse.tar.gz
pour extraire les fichiers2) Exécutez
pip install -r wheelhouse/requirements.txt --no-index --find-links wheelhouse
pour installer les bibliothèques et leurs dépendancesla source
pip install
à la fin, il dit: ERREUR: impossible de trouver une version qui satisfait à l'exigence ..`python hors ligne. pour ce faire, j'utilise virtualenv (environnement Python isolé)
1) Installez virtualenv en ligne avec pip:
ou hors ligne avec whl: allez sur ce lien , téléchargez la dernière version (.whl ou tar.gz) et installez-la avec cette commande:
en utilisant,
--user
vous n'avez pas besoin d'utilisersudo pip…
.2) utiliser virtualenv
sur la machine en ligne, sélectionnez un répertoire avec terminal
cd
et exécutez ce code:après avoir installé tous les packages, vous devez générer un
requirements.txt
alors pendant que votre virtualenv est actif, écrivezouvrez un nouveau terminal et créez un autre env comme
myenv2
.maintenant, vous pouvez accéder à votre dossier hors connexion où se trouvent vos dossiers
requirements.txt
ettranferred_packages
. téléchargez les packages avec le code suivant et placez-les tous dans untranferred_packages
dossier.amenez votre dossier hors ligne sur un ordinateur hors ligne, puis
ce qu'il y a dans le dossier hors ligne [requirements.txt, tranferred_packages {Flask-0.10.1.tar.gz, ...}]
liste de contrôle de votre colis
note: comme nous le sommes en 2017, il est préférable d'utiliser python 3. vous pouvez créer python 3 virtualenv avec cette commande.
la source
Téléchargez l' archive tar , transférez-la sur votre machine FreeBSD et extrayez-la, puis exécutez
python setup.py install
et vous avez terminé!EDIT: Juste pour ajouter à cela, vous pouvez également installer les archives tar avec pip maintenant.
la source
Permettez-moi de parcourir le processus étape par étape:
ouvrez une invite de commande ou un shell et exécutez la commande suivante:
Supposons que le package souhaité soit
tensorflow
$ pip download tensorflow
Maintenant, sur l'ordinateur cible, copiez le
packages
dossier et appliquez la commande suivanteNotez que le
tensorflow-xyz.whl
doit être remplacé par le nom d'origine du package requis.la source
En utilisant
wheel
packages compilés.regrouper:
copiez l'archive tar et installez:
Remarque
wheel
les packages binaires ne sont pas répartis sur plusieurs machines.Plus de réf. ici: https://pip.pypa.io/en/stable/user_guide/#installation-bundles
la source
J'avais un problème similaire. Et j'ai dû le faire installer de la même manière que nous le faisons depuis pypi.
J'ai fait les choses suivantes:
Créez un répertoire pour stocker tous les packages de la machine ayant accès à Internet.
Téléchargez tous les packages sur le chemin
Tarez le répertoire des packages et copiez-le sur la machine qui n'a pas accès à Internet. Alors fais,
Copiez le package.tar.gz sur la machine de destination qui n'a pas accès à Internet.
Sur la machine qui n'a pas d'accès Internet, procédez comme suit (en supposant que vous avez copié les packages goudronnés dans / chemin / vers / package / dans la machine actuelle)
et collez le contenu suivant à l'intérieur et enregistrez-le.
Enfin, je vous suggère d'utiliser une forme de
virtualenv
pour installer les paquets.Vous devriez pouvoir télécharger tous les modules qui se trouvent dans le répertoire / chemin / vers / package / .
Remarque: je n'ai fait que cela, car je ne pouvais pas ajouter d'options ou modifier la façon dont nous installons les modules. Sinon j'aurais fait
la source
Pour Pip 8.1.2, vous pouvez utiliser
pip download -r requ.txt
pour télécharger des packages sur votre machine locale.la source