web-dev-qa-db-fra.com

(Python) Utilisez une bibliothèque localement au lieu de l'installer

Script:
J'ai écrit un script en python qui envoie occasionnellement des tweets à Twitter
Il n'utilise qu'une seule bibliothèque appelée: tweepy
après avoir installé la bibliothèque, cela fonctionne, parfait.

Problème:
Je voudrais héberger le script sur un serveur où je n'ai pas les privilèges pour installer quoi que ce soit
Ce serait formidable si je pouvais simplement l'inclure localement à partir du dossier dans lequel je l'ai.
À partir de maintenant, tout ce que je dois inclure en haut de mon fichier est:

import tweepy

le dossier tweepy (a un __init__.py fichier qui je pense est important.

Question:
Comment puis-je utiliser cette bibliothèque sans l'installer?
en gros, je veux remplacer: import tweepy avec import local_folder/tweepy/*

cela pourrait juste être python bon sens, mais je suis coincé!

55
Trevor Hickey

EDIT: Cette réponse est obsolète. Vous devez utiliser VirtualEnv . Si vous êtes allergique aux logiciels tiers pour une raison quelconque (dans ce cas, pourquoi installez-vous des bibliothèques?), Il existe quelque chose appelé venv , qui est littéralement intégré à python3, donc il n'y a aucune excuse de ne pas utiliser une sorte de virtualisation. (Cependant, la plupart des personnes actives dans la communauté préfèrent VirtualEnv. Voir https://stackoverflow.com/a/41573588/410889 .)

VirtualEnv installe un interpréteur local python, avec un dossier de packages locaux et tout. En plus de résoudre entièrement le problème des privilèges administratifs, la caractéristique la plus importante de VirtualEnv est qu'il vous permet de conserver votre Si vous avez un projet qui a besoin de Foo version 2.3 et un autre qui a besoin de Foo version 1.5, vous ne pouvez pas les faire partager le même environnement; vous devez garder leurs environnements séparés avec VirtualEnv.


Il existe plusieurs possibilités:

Si vous savez déjà comment installer les modules Python, la configuration par défaut de distutils inclut déjà une option d'installation par utilisateur. Exécutez simplement python setup.py install --user au lieu de python setup.py install. C'est le plus simple, car cela ne nécessite pas l'ajout de code source.

Vous pouvez également exécuter le script avec le répertoire tweepy comme répertoire de travail actuel.

Vous pouvez ajouter une variable d'environnement nommée PYTHONPATH à n'importe quel environnement (par exemple, le Shell) que vous utilisez pour exécuter votre script et le faire contenir le chemin d'accès à tweepy.

Si tout le reste échoue et que vous voulez vraiment modifier votre code source, vous devrez modifier sys.path. sys.path est une liste d'emplacements où Python recherchera le code.

Dans votre code, écrivez:

import sys
sys.path.append("/path/to/your/tweepy/directory")

import tweepy
62
HardlyKnowEm

vous devez installer un environnement virtuel python afin de ne jamais avoir à vous soucier d'avoir des privilèges d'administrateur, et vous pouvez installer ce que vous voulez.

8
Jonathan Ong

Aussi si vous voulez l'utiliser fréquemment comme dans un script. Un moyen facile d'exporter "PYTHONPATH" dans le fichier bashrc/zshrc et de donner le chemin vers le répertoire contenant votre code.

Par exemple:

export PYTHONPATH=$PYTHONPATH:$HOME/path/to/module

De cette façon, vous n'avez pas besoin de faire sys.path à chaque redémarrage.

Happy Coding

6
igaurav

Solution simple et propre:

import sys
sys.path.insert(0, '/absolute/path/to/package')
import some.cool.package

some.cool.package.doCoolStuff()

réponse ci-dessus avec 'append' ne fonctionne pas avec les packages qui sont également installés

3
user2846569