Question

Est-il possible d'encapsuler les modules python 'mécanize' et 'BeautifulSoup' dans un seul fichier .py?

Mon problème est le suivant: J'ai un script en python qui nécessite mécanize et BeautifulSoup. Je l'appelle depuis une page php. Le serveur Webhost prend en charge python, mais les modules ne sont pas installés. C'est pourquoi j'aimerais faire cela.

Désolé si cette question est stupide.

edit: Merci à tous pour vos réponses. Je pense que la solution à cela résout autour de virtualenv. Quelqu'un pourrait-il avoir la gentillesse de m'expliquer cela en termes très simples? J'ai lu la page virtualenv, mais je suis toujours très confus. Merci encore une fois.

Était-ce utile?

La solution

Découvrez virtualenv pour créer une installation python locale dans laquelle vous pourrez installer BeautifulSoup et toutes les autres bibliothèques de votre choix.

http://pypi.python.org/pypi/virtualenv

Autres conseils

Vous n'avez pas réellement besoin de combiner les fichiers ou de les installer dans un emplacement système. Assurez-vous simplement que les bibliothèques se trouvent dans un répertoire lisible par votre script Python (et donc par votre application PHP) et ajouté au chemin de chargement Python.

Le moteur d’exécution Python recherche les bibliothèques dans les répertoires du tableau sys.path . Vous pouvez ajouter des répertoires à ce tableau au moment de l'exécution à l'aide de la variable d'environnement PYTHONPATH ou en ajoutant explicitement des éléments à sys.path . L'extrait de code ci-dessous, ajouté à un script Python, ajoute le répertoire dans lequel le script se trouve au chemin de recherche, rendant implicitement toutes les bibliothèques situées au même endroit disponibles à l'importation:

import os, sys
sys.path.append(os.path.dirname(__file__))

Non, vous ne pouvez pas (en général), car cela détruirait la méthode de recherche de module utilisée par python (fichiers et répertoires). Je suppose que vous pourriez, avec un peu de hack, générer une hiérarchie de modules sans avoir la disposition du système de fichiers, mais c'est un énorme hack, probablement quelque chose comme

>>> sha=types.ModuleType("sha")
>>> sha
<module 'sha' (built-in)>
['__doc__', '__name__']
>>> sha.foo=3
>>> sha.zam=types.ModuleType("zam")
>>> sha.foo
3
>>> dir(sha)
['__doc__', '__name__', 'foo', 'zam']

Mais dans tous les cas, vous devrez générer le code qui crée cette présentation et stocke le contenu dans des identifiants correctement nommés.

Ce dont vous avez besoin, c'est probablement d'apprendre à utiliser les fichiers .egg. Ce sont des entités agglomérées uniques contenant votre bibliothèque, telles que des fichiers .jar.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top