2017-09-23 8 views
0

Je veux utiliser un module Python comme urllib.request mais j'ai toutes les dépendances du module dans un fichier où je peux les utiliser sur un ordinateur sans avoir toute l'installation de Python.Comment copier un module Python et ses dépendances dans un fichier

Y at-il un module ou un outil que je peux utiliser pour copier simplement un module spécifique dans un fichier et il est sans dépendances avoir à passer par le script entier et le copier manuellement. J'utilise Python 3.

Répondre

1

Il y a une variété d'options disponibles pour faire ce genre de chose. Celui qui me vient à l'esprit est le support zippé intégré du python; Si vous avez un __main__.py dans votre zip, l'exécution de python sur le fichier zip l'exécutera en tant que script. Les paquets simples (purs python, non dépendants du système d'exploitation) devraient être simplement intégrables dans un tel fichier zip.

Alternativement, des outils tels que cx_Freeze peuvent empaqueter un script avec ses dépendances y compris l'interpréteur d'une manière spécifique au système d'exploitation. Cela entraînera généralement une plus grande empreinte car l'ensemble résultant comprend également l'interpréteur, mais permet d'inclure des dépendances plus complexes avec des composants natifs; Je ne suis pas sûr que cela soit possible avec la fonctionnalité d'importation zip de python.

+0

Je ne connais pas la première partie. Si je le mets dans un zip va-t-il fonctionner comme un module normal? Est-ce que '__main __. Py' doit juste être ce que contient un module normal? Savez-vous où je pourrais trouver la documentation pour ceci? Merci pour cette solution possible (+1). – Simon

+0

Je ne sais pas vraiment où les docs sur ce live, désolé. – Anonymouse

+1

En tant qu'expérience, j'ai créé un virtualenv, des requêtes installées, copié tout dans 'venv/lib/python3.5/site-packages' dans la racine du fichier zip, mettez un simple' __main __. Py' (' importer des requêtes, print (requests.get ("http://ix.io/M3M") .text) '), et essayé de l'exécuter dans un python qui n'a pas de requêtes disponibles. Cela a fonctionné :) Je ne connais pas vraiment la fonctionnalité moi-même, mais il semble fonctionner de manière assez magique. – Anonymouse

1

Utilisez une technologie de conteneur. Docker, par exemple, vous donne la possibilité de transférer votre code avec des dépendances à une machine que vous voulez sans vous devez installer quelque chose de nouveau dans la machine et permet de gagner beaucoup de temps aussi.

+1

Merci pour la réponse, mais je l'ai décidé d'autre réponse est plus utile dans ce cas. – Simon