Comment installer manuellement un module pypi sans pip / easy_install?

91

Je souhaite utiliser le module gntp pour afficher des notifications de type grille-pain pour un logiciel C / C ++. Je veux empaqueter toutes les dépendances pour que le logiciel soit auto-exécutable sur un autre ordinateur.

Le module gntp n'est disponible que via l'installateur pip, qui ne peut pas être utilisé (L'ordinateur qui exécute le logiciel n'a pas de connexion Internet): comment puis-je l'installer à partir des sources?

Je préférerais ne pas forcer l'utilisateur à installer easy_install / pip et ajouter manuellement le chemin pip au% PATH.

PS: J'utilise Python 2.7 sur une machine Windows.

lucasg
la source
4
Peut-être avec python setup.py install?
Nicolas

Réponses:

149
  1. Téléchargez le package
  2. décompressez-le s'il est zippé
  3. cd dans le répertoire contenant setup.py
  4. S'il y a des instructions d'installation contenues dans la documentation contianed ici, lisez et suivez les instructions AUTREMENT
  5. tapez python setup.py install

Vous aurez peut-être besoin de privilèges d'administrateur pour l'étape 5. Ce que vous faites ici dépend donc de votre système d'exploitation. Par exemple dans Ubuntu, vous diriezsudo python setup.py install

EDIT - merci à kwatford (voir premier commentaire)

Pour contourner le besoin de privilèges d'administrateur à l'étape 5 ci-dessus, vous pourrez peut-être utiliser l'indicateur --user. De cette manière, vous pouvez installer le package uniquement pour l'utilisateur actuel.

Les documents disent:

Les fichiers seront installés dans les sous-répertoires de site.USER_BASE (écrits comme userbase ci-après). Ce schéma installe des modules Python purs et des modules d'extension au même emplacement (également appelé site.USER_SITE). Voici les valeurs pour UNIX, y compris Mac OS X:

Plus de détails peuvent être trouvés ici: http://docs.python.org/2.7/install/index.html

Sheena
la source
8
pip / easy_install / setup.py acceptent généralement un --userindicateur pour installer le package uniquement pour l'utilisateur actuel, en contournant généralement le besoin d'un accès administrateur.
kwatford
3
Pour une raison quelconque, je vois ceci: ImportError: No module named 'setuptools'j'ai trouvé cela ici: pypi.python.org/pypi/setuptools/1.1.6 Bien que l'installation m'ait donné des erreurs d'exception, maintenant le module websocket ne fonctionne pas du tout, je pense que je vais donner à ce stade sur Python 3.3 sous Windows.
SSH ce
2
@SSHThis: J'ai les mêmes résultats avec un package dont j'essaie de faire fonctionner l'installation. Augmenter la verbosité donne «Parce que cette distribution a été installée --multi-version [...]» qui est à la fois faux (une seule version de python installée ici) et inutile (en utilisant le document «python -m easy_install [...] "ne vous aide pas du tout), je suis avec vous - Python est inutilisable.
Eric Towers
1
Je suppose pip install target-packagequ'habituellement installe / met à jour automatiquement d'autres packages dont dépend le package cible. Cela se produit-il en cas d'approche setup.py? Ou est-ce que zip du package contient également toutes les dépendances? Et voulez-vous dire que nous devrions télécharger des roues python au lieu de zips? Comme ceux - ci pour numpy? Sinon où trouver les zips (par exemple pour numpy)? (Je demande tout cela parce que je suis obligé de travailler derrière un proxy d'entreprise où je dois lutter pour chaque téléchargement: '()
Mahesha999
3
vous ne pouvez pas vraiment télécharger les packages en mode hors connexion ... Si vous voulez les télécharger en dehors de votre réseau de travail stupide, je ferais probablement ce qui suit: 1. créer un virtualenv. 2. python setup.py installou pip installtoutes les choses dont vous aurez besoin. 3. exécutez pip freeze pour obtenir une liste de tous les packages et de toutes les versions. Vous pouvez le stocker dans un fichier (traditionnellement appelé requirements.txt '. Ensuite, si vous voulez télécharger les packages afin de pouvoir les copier sur différentes machines que vous pouvez utiliser pip download [options] -r <requirements file>. Ce n'est pas la manière la plus efficace. Mais facile
Sheena
5

Pour expliquer davantage la réponse de Sheena , j'avais besoin d' installer des outils de configuration en tant que dépendance d'un autre outil, par exemple more-itertools .

Télécharger

Cliquez sur le Clone or downloadbouton et choisissez votre méthode. Je les ai placés dans un dev/py/libsrépertoire de mon répertoire personnel. Peu importe où ils sont enregistrés, car ils n'y seront pas installés.

Installation des outils de configuration

Vous devrez exécuter ce qui suit dans le répertoire setup-tools .

python bootstrap.py
python setup.py install

Installation des dépendances générales

Vous pouvez maintenant accéder au répertoire more- itertools et l'installer normalement.

  1. Téléchargez le package
  2. Déballez-le s'il s'agit d'une archive
  3. Naviguez ( cd ...) dans le répertoire contenantsetup.py
  4. S'il y a des instructions d'installation contenues dans la documentation contenue ici, lisez et suivez les instructions AUTREMENT
  5. Tapez: python setup.py install
M. Polywhirl
la source
2

Même si la réponse de Sheena fait le travail, pipne s'arrête pas là.

D'après la réponse de Sheena:

  1. Téléchargez le package
  2. décompressez-le s'il est zippé
  3. cd dans le répertoire contenant setup.py
  4. S'il y a des instructions d'installation contenues dans la documentation contenue dans ce document, lisez et suivez les instructions AUTREMENT
  5. tapez python setup.py install

À la fin de cela, vous vous retrouverez avec un .eggfichier au format site-packages. En tant qu'utilisateur, cela ne devrait pas vous déranger. Vous pouvez importet uninstallle paquet normalement. Cependant, si vous souhaitez procéder de la même pipmanière, vous pouvez continuer les étapes suivantes.

Dans l' site-packagesannuaire,

  1. unzip <.egg file>
  2. renommer le EGG-INFOrépertoire comme<pkg>-<version>.dist-info
  3. Vous verrez maintenant un répertoire séparé avec le nom du package, <pkg-directory>
  4. find <pkg-directory> > <pkg>-<version>.dist-info/RECORD
  5. find <pkg>-<version>.dist-info >> <pkg>-<version>.dist-info/RECORD. Le but >>est d'empêcher l'écrasement.

Maintenant, en regardant le site-packagesrépertoire, vous ne réaliserez jamais que vous avez installé sans pip. Pour uninstall, faites comme d'habitude pip uninstall <pkg>.

John Strood
la source
Que faire si j'installe un package à partir du référentiel Anaconda et qu'il n'a pas de setup.pyfichier?
Confondu