L'installation de python module dans le code
J'ai besoin d'installer un paquet depuis PyPi directement dans mon script.
Peut-être il ya certains module ou distutils
(distribute
, pip
etc.) la fonction qui me permet d'exécuter quelque chose comme pypi.install('requests')
et les demandes seront installés dans mon virtualenv.
- Pourquoi ne pas définir le module lié comme la dépendance à l'setup.py de votre propre forfait?
- vous savez ... la façon dont il est censé être fait ... mais vous pouvez toujours l'os.system("pip install bla"), mais vous pouvez avoir besoin de sudo accès ... vaut mieux en faire un dépendance dans votre setup.py
- La même question mais sur l'installation facile (2.7 n'est pas livré avec pip)
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également utiliser quelque chose comme:
'install --upgrade'
?pip.main()
comme vous le feriez sur la ligne de commande (mais avec chaque option comme une entrée dans la liste, au lieu d'une seule chaîne). Et de spécifier la version du paquet que vous voulez, faites la même chose que sur la ligne de commande.. ex:pip.main(['install', 'pip==7.1.0'])
pip install --target=my-virtualenv/lib/python2.7/site-packages
.ValueError: Unable to configure handler 'console': 'OutStream' object has no attribute 'closed'
lors de l'utilisation de cette fonction. Quelqu'un sait pourquoi ?from pip._internal import main as pipmain
ensuite, vous pouvez utiliserpipmain()
tout comme le obsolètepip.main()
voir stackoverflow.com/questions/43398961/...pip.main(["install", "--upgrade", "pip"])
), j'ai dû utiliser la modification proposée par @MikePalmice à la poursuite de l'installation des paquets.Rickard's solution n'est pas pris en charge par le pip de l'équipe de développement et va se planter dans certains cas (par exemple, multithread). De plus, depuis pip 10 le code a été déplacé à
pip._internal
afin de le rendre clair que ce n'est pas pris en charge, Cette solution va donc échouer avec un message d'erreur d'importation sur "pip>=10.0.0".De Quantum est la solution préférée des moyens de résoudre le problème, cependant, sa mise en œuvre ne garantit pas qu'elle va appeler le bon pip.
Cette solution garantit qu'il appelle le pip de l'interpréteur python exécute le code.
Il fait la même chose que le Quantum de la solution, mais au lieu de l'exécution du pip directement, il fonctionne de la même python exécutable en cours d'exécution du code et lui demande d'exécuter le pip module installé, et passe le reste de la arguments au.
pip
avecpython3.5
.Si vous souhaitez utiliser
pip
pour installer le package et l'importer après l'installation, vous pouvez utiliser ce code: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 faire pour actualiser sys.chemin d'accès? pour plus d'informations.
imp.reload(site)
meRuntimeError: dictionary changed size during iteration
pip uninstall <package_name>
. Je peux toujours désinstaller à l'aide depip.main
mais je voulais juste savoir où faut-il installer le paquet?pip install requests[security]
? Je ne savais pas si elle allait bien définir les variables globales correctement.Cela devrait fonctionner:
pip
par programmation ne fonctionne pas, mais ce ne.Vous définissez le module dépendant à l'intérieur de la setup.py de votre propre paquet avec le "install_requires" option.
Si votre paquet doit avoir de la console de script généré, vous pouvez utiliser le bouton "console_scripts" point d'entrée dans le but de générer un script qui sera placé
dans le dossier "emplacement" (par exemple de votre virtualenv de l'environnement).
J'espère que cette question est toujours valide.
Je l'ai fait ci-dessus quelque chose comme ceci:
le second bloc try peut être écrit dans la partie de la première bloc try ainsi, cependant à mon problème je doit écrire séparer les deux blocs.
C'est comment je installer tous les paquets pour mes projets.
Juste ajouter tous les noms de la liste et de les exécuter une avant d'exécuter le code principal.
Combinant cela avec l'utilisation de "venv" c'est génial!
Je suppose que nous avons un pip sur notre machine, et essayer d'attraper l'un spécifique dépendance qui manque.. essayez cette méthode et laissez-moi savoir ce que vous en pensez.
Aussi,
veuillez envisager de travailler avec des
pip
module lui-même si l'aide delambda
fonctions de l'application "auto-conscience" de l'importateur mécanisme. Simplement en suivant ce bout de code 🙂pip
module lui-même 🙂 il suffit de suivre ce petit bout de codePour moi cela fonctionne (python 2.x), en supposant que toutes les exigences sont définies à l'intérieur
requirements.txt
:Vous pouvez installer à l'aide du module sys bien
- Je utiliser le
os.system
pour émuler un système d'exploitation du terminal de l'importation d'un module, car alors, vous pouvez utiliser le module dans tous les autres scripts.Par exemple, je suis entrain de créer un Moteur de Jeu qui s'exécute sur des scripts ajoutés ensemble, la plupart de ces scripts utiliser Pygame et si l'utilisateur n'a pas pygame, le fichier de démarrage va ajouter à l'aide de ce code:
Malheureusement, je n'ai aucune idée sur la façon d'obtenir pip sur la machine de l'utilisateur, donc cela dépend de l'utilisateur ayant pip.
Depuis importables pip-module n'est pas toujours de travail, il est plus robuste:
Cela fonctionne sur Windows.
1er
2e
3ème
vous pouvez toujours télécharger
puis à droite de toutes les commandes du terminal afin de la télécharger à partir de là.
comme
quel qu'il soit, je ne suis pas sûr, mais si vous ne savez même pas comment le faire dans le terminal, comment vas-tu le faire en python.