Installez un package Python dans un répertoire différent en utilisant pip?

StackOverflow https://stackoverflow.com/questions/2915471

  •  04-10-2019
  •  | 
  •  

Question

Je sais que la réponse évidente est d'utiliser virtualenv et virtualenvwrapper, mais pour diverses raisons, je ne peux pas / ne veulent pas le faire.

Alors, comment puis-je modifier la commande

pip install package_name

pour pip installer le paquet quelque part autre que le site-packages par défaut?

Était-ce utile?

La solution

Utilisation:

pip install --install-option="--prefix=$PREFIX_PATH" package_name

Vous pouvez également utiliser --ignore-installed pour forcer toutes les dépendances à être réinstallé en utilisant ce nouveau préfixe. Vous pouvez utiliser --install-option à plusieurs fois pour ajouter l'une des options que vous pouvez utiliser avec python setup.py install (--prefix est probablement ce que vous voulez, mais il y a un tas d'autres options que vous pouvez utiliser).

Autres conseils

Le --target commutateur est la chose que vous « cherchez:

pip install --target=d:\somewhere\other\than\the\default package_name

Mais vous avez encore besoin d'ajouter à d:\somewhere\other\than\the\default PYTHONPATH à les utiliser réellement de cet endroit.

  

-t, --target

  Installez les paquets dans . Par défaut, ce ne remplacera pas les fichiers existants / dossiers dans .
  Utilisez --upgrade pour remplacer les packages existants dans avec les nouvelles versions.


pip Mise à niveau si le commutateur cible ne sont pas disponibles:

Sous Linux ou OS X:

pip install -U pip

Sous Windows (cela fonctionne autour un problème ):

python -m pip install -U pip

Au lieu de l'option --target ou l'option --install-options, j'ai trouvé que les éléments suivants fonctionne bien (de la discussion sur un bug concernant cette chose à https://github.com/pypa/pip/issues/446 ):

PYTHONUSERBASE=/path/to/install/to pip install --user

(Ou définir le répertoire PYTHONUSERBASE dans votre environnement avant d'exécuter la commande, en utilisant export PYTHONUSERBASE=/path/to/install/to)

Il utilise l'option --user très utile, mais dit pour faire la bin, lib, share et d'autres répertoires que vous attendez dans un préfixe personnalisé plutôt que $HOME/.local.

Ensuite, vous pouvez ajouter à votre PATH, PYTHONPATH et d'autres variables comme vous le feriez dans un répertoire d'installation normale.

Notez que vous pouvez aussi avoir besoin de spécifier les options de --upgrade et --ignore-installed si des colis sur lesquels cela dépend exigent des versions plus récentes à installer dans le répertoire PYTHONUSERBASE, pour remplacer les versions fournies par le système.

Un exemple complet:

PYTHONUSERBASE=/opt/mysterypackage-1.0/python-deps pip install --user --upgrade numpy scipy

.. installer les versions scipy et package numpy les plus récents dans un répertoire que vous pouvez inclure dans votre PYTHONPATH comme si (en utilisant bash et python 2.6 sur CentOS 6 pour cet exemple):

export PYTHONPATH=/opt/mysterypackage-1.0/python-deps/lib64/python2.6/site-packages:$PYTHONPATH
export PATH=/opt/mysterypackage-1.0/python-deps/bin:$PATH

Utilisation virtualenv est toujours une solution meilleure et plus propre!

L'installation d'un package Python inclut souvent des fichiers Python purs. Si le paquet comprend des données, des scripts et ou exécutables, ceux-ci sont installés dans des répertoires différents des purs fichiers Python.

En supposant que votre package n'a pas de données / scripts / executables et que vous voulez vos fichiers Python pour aller dans /python/packages/package_name (et non pas un sous-répertoire quelques niveaux inférieurs /python/packages que lors de l'utilisation --prefix), vous pouvez utiliser une commande de temps:

pip install --install-option="--install-purelib=/python/packages" package_name

Si vous voulez que tous (ou plus) de vos colis pour aller là-bas, vous pouvez modifier votre ~/.pip/pip.conf pour inclure:

[install]
install-option=--install-purelib=/python/packages

De cette façon, vous ne pouvez pas oublier d'avoir à le préciser encore et encore.

Les excecutables / données / scripts inclus dans le package sera toujours aller à leur place par défaut, sauf si vous spécifiez plus d'options d'installation (--prefix / --install-data / --install-scripts, etc., pour plus de détails regarder le installation personnalisée options).

Pour pip installer une bibliothèque exactement où je le voulais, je naviguais à l'endroit que je voulais le répertoire avec le terminal puis utilisé

pip install mylibraryName -t . 

la logique dont je pris de cette page: https://cloud.google.com/appengine / docs / python / googlecloudstorageclient / télécharger

Personne ne semble avoir mentionné l'option -t mais le plus simple:

pip install -t <direct directory> <package>

Il suffit d'ajouter un point à la réponse de @Ian Bicking:

En utilisant l'option --user pour spécifier le répertoire d'installation aussi si l'on veut installer un package Python dans un répertoire de la maison (sans droit d'utilisateur sudo) sur le serveur distant.

par exemple.

pip install --user python-memcached

La commande installera le paquet dans l'un des répertoires figurant dans votre PYTHONPATH.

Les versions plus récentes de pip (8 ou version ultérieure) peuvent directement utiliser le option --prefix :

pip install --prefix=$PREFIX_PATH package_name

$PREFIX_PATH est le préfixe d'installation où lib, bin et d'autres dossiers de niveau supérieur sont placés.

testé ces options avec python3.5 et pépin 9.0.3:

pip installer --target / myfolder [paquets]

Installe les paquets, y compris TOUS les dépendances sous / myfolder. Ne tient pas compte du fait que les paquets dépendants sont déjà installés ailleurs en Python. Vous trouverez des forfaits de / myfolder / [package_name]. Si vous avez plusieurs versions Python, cela ne prend pas en compte (pas de version Python dans le nom du dossier du package).

pip installer prefix / myfolder [paquets]

Les contrôles sont déjà installés dépendances. Installera des paquets dans /myfolder/lib/python3.5/site-packages/[packages]

pip installer --root / myfolder [paquets]

dépendances contrôles comme prefix mais l'emplacement d'installation sera /myfolder/usr/local/lib/python3.5/site-packages/[package_name].

pip install --user [packages]

installera des paquets dans $ HOME: /home/[USER]/.local/lib/python3.5/site-packages Recherches Python automatiquement à partir de ce chemin .local de sorte que vous n'avez pas besoin de le mettre à votre PYTHONPATH.

=> Dans la plupart des cas --user est la meilleure option à utiliser. Dans le cas où le dossier à domicile ne peut pas être utilisé en raison de quelque raison que ce prefix.

pip install packageName -t pathOfDirectory

ou

pip install packageName --target pathOfDirectorty

Si vous utilisez brew avec python, malheureusement, pip / navires PIP3 avec des options très limitées. Vous n'avez pas --install-options, --target, les options --user comme mentionné ci-dessus.

  

Remarque sur pip installer --user
  Le pépin installation normale --user est désactivé pour Python infusé. Ceci est dû à un bogue dans distutils, car Homebrew écrit un distutils.cfg qui définit le préfixe du package.   Une solution possible (qui met des scripts exécutables dans le bac de ~ / Library / Python) est:    python -m pip install --user --install-option="--prefix=" <package-name>

Vous trouverez peut-être cette ligne très lourde. Je suggère l'utilisation pyenv pour la gestion. Si vous utilisez

brew upgrade python python3

Ironie du sort, vous êtes en fait downgrade fonctionnalité PiP.

(je poster cette réponse, tout simplement parce que pip dans mon Mac OS X n'a ??pas l'option --target, et j'ai passé des heures le fixant)

pip install /path/to/package/

est maintenant possible.

La différence avec cela et en utilisant le -e ou drapeau --editable est que les liens -e à l'endroit où le paquet est enregistré (à savoir votre dossier de téléchargement), plutôt que de l'installer dans votre chemin de python.

Cela signifie que si vous supprimer / déplacer le paquet dans un autre dossier, vous ne serez pas en mesure de l'utiliser.

Avec pépin v1.5.6 sur Python v2.7.3 (GNU / Linux), l'option --root permet de spécifier un préfixe d'installation globale, (apparemment) sans tenir compte des options de package spécifique. Essayez f.i.

$ pip install --root=/alternative/prefix/path package_name

Je vous propose de suivre la documentation et créer ~ / .pip / fichier pip.conf. Remarque dans la documentation qu'il manque répertoire spécifié en-tête, ce qui conduit à l'erreur suivante:

error: install-base or install-platbase supplied, but installation scheme is incomplete

Le contenu de travail complet du fichier est conf:

[install]
install-base=$HOME
install-purelib=python/lib
install-platlib=python/lib.$PLAT
install-scripts=python/scripts
install-headers=python/include
install-data=python/data

Unfortunatelly je peux installer, mais lorsque je tente de pépin désinstaller me dit qu'il n'y a pas de package pour le processus de désinstallation .... si quelque chose est encore mal, mais le paquet va à son emplacement prédéfini.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top