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

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

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

import tweepy

Le dossier tweepy (a un fichier __init__.py Que je crois important.

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

Cela pourrait juste être le bon sens de python, mais je suis coincé!

47
demandé sur Trevor Hickey 2012-01-30 09:21:37

4 réponses

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

VirtualEnv installe un interpréteur Python local, avec un dossier packages local 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 garder vos environnements séparés. 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 y en a quelques-uns possibilités:

Si vous savez déjà comment installer des modules Python, la configuration par défaut de distutils inclut déjà une option d'installation par utilisateur. Il suffit d'exécuter 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 de tweepy, comme le répertoire de travail courant.

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 faites-le 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. {[6] } est une liste d'emplacements où Python recherchera du code.

Dans votre code, écrivez:

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

import tweepy
57
répondu HardlyKnowEm 2017-10-05 15:52:00

, Vous devez installer un virtual environnement python ainsi, vous n'avez jamais à vous soucier d'avoir des privilèges d'administrateur, et vous pouvez installer ce que vous voulez.

8
répondu Jonathan Ong 2012-01-30 05:31:16

Aussi, si vous voulez l'utiliser fréquemment, comme dans le script . Un moyen facile d'exporter "PYTHONPATH" dans le fichier bashrc/zshrc et de donner un 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.chemin d'accès à chaque fois que vous redémarrez .

Codage Heureux

6
répondu igaurav 2014-10-28 19:08:24

Solution simple et propre:

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

some.cool.package.doCoolStuff()

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

1
répondu user2846569 2018-06-13 14:49:52