Installer le module python dans le code
j'ai besoin d'installer un paquet de PyPi directement dans mon script.
Peut-être qu'il y a un module ou distutils
( distribute
, pip
etc.) qui me permet d'exécuter quelque chose comme pypi.install('requests')
et les requêtes seront installées dans mon virtualenv.
10 réponses
Vous pouvez également utiliser quelque chose comme:
import pip
def install(package):
if hasattr(pip, 'main'):
pip.main(['install', package])
else:
pip._internal.main(['install', package])
# Example
if __name__ == '__main__':
install('argh')
Si vous voulez utiliser pip
pour installer le package et l'importer après l'installation, vous pouvez utiliser ce code:
def install_and_import(package):
import importlib
try:
importlib.import_module(package)
except ImportError:
import pip
pip.main(['install', package])
finally:
globals()[package] = importlib.import_module(package)
install_and_import('transliterate')
Si vous avez installé un paquet en tant qu'utilisateur, vous pouvez rencontrer le problème que vous ne pouvez pas importer le package. Voir comment rafraîchir SAJR.chemin d'accès? pour plus d'informations.
Rickard n'est pas supportée par l'équipe de développement pip et s'écrasera dans certains cas (par exemple multi threads). De plus, depuis que pip 10 le code a été déplacé à pip._internal
afin d'indiquer clairement que cela n'est pas supporté, cette solution échouera donc avec une erreur d'importation sur "pip>=10.0.0".
la solution de Quantum est la façon préférée de résoudre le problème, mais son implémentation ne garantit pas qu'il appellera le bon pip.
cette solution garantit qu'il appelle le pip de l'interpréteur python exécutant le code.
import subprocess
import sys
def install(package):
subprocess.call([sys.executable, "-m", "pip", "install", package])
il fait la même chose que la solution de Quantum, mais au lieu d'exécuter pip directement, il exécute le même exécutable python qui exécute le code et lui dit d'exécuter le module pip qu'il a installé et lui passe le reste des arguments.
cela devrait fonctionner:
import subprocess
def install(name):
subprocess.call(['pip', 'install', name])
vous définissez le module dépendant à l'intérieur du setup.py de votre propre paquet avec l'option" install_requires".
si votre paquet a besoin de générer un script console, vous pouvez utiliser le point d'entrée" console_scripts " pour générer un script d'enrubannage qui sera placé dans le dossier' bin ' (par exemple de votre environnement virtualenv).
j'espère que cette question est toujours valide. J'ai fait quelque chose comme ceci:
import sys
import os
import site
try:
import pip
except ImportError:
print "installing pip"
cmd = "sudo easy_install pip"
os.system(cmd)
reload(site)
try:
import requests
except ImportError:
print "no lib requests"
import pip
cmd = "sudo pip install requests"
print "Requests package is missing\nPlease enter root password to install required package"
os.system(cmd)
reload(site)
le deuxième bloc d'essai peut être écrit dans la partie else du premier bloc d'essai aussi bien, cependant dans mon énoncé de problème je dois écrire deux blocs séparés.
je suppose que nous avons un pip sur notre machine, et essaiera de saisir la dépendance spécifique qui manque.. essayez cette méthode et dites-moi ce que vous en pensez.
import os
try:
import something
.....
.....
except ImportError as e:
pip = lambda : os.system('pip install' + str(e)[15:])
pip()
aussi,
veuillez envisager de travailler avec le module pip
lui-même si vous utilisez les fonctions lambda
pour appliquer le mécanisme de l'importateur" conscient de lui-même". Il suffit de suivre cet extrait de code:)
try:
import somthing
..........
..........
except ImportError as e:
# importing pip module to handle pip functionalites
import pip
# create a lambda that import using pip by module_error_name=e[15:]
installer = lambda : pip.main(['install', str(e)[15:])
# create a lambda that import a module by linear_lambda_call
importer = lambda x : __import__(str(x)).import_module()
# install the module
installer()
# import the module
importer()
vous pouvez installer en utilisant le module sys a well
import sys
!{sys.executable} -m pip install <package> --user
j'utilise le os.system
pour émuler un terminal OS important un module car alors, vous pouvez utiliser le module dans tous les autres scripts.
par exemple, je crée un moteur de jeu qui tourne sur des scripts séparés ajoutés ensemble, la plupart de ces scripts utilisent Pygame et si l'utilisateur n'a pas pygame, le fichier de démarrage l'ajoutera en utilisant ce code:
import os
os.system('pip install pygame')
Malheureusement, je n'ai aucune idée sur la façon d'obtenir pip sur la machine de l'utilisateur si ce dépend de l'utilisateur ayant pip.
vous pouvez toujours télécharger
import os
puis droit toutes les commandes de terminal pour le télécharger à partir de là.
comme
while True:
code = input("")
os.system("code")
quoi que ce soit je ne suis pas sûr mais si vous ne savez même pas comment le faire en terminal comment allez-vous le faire en python.