Vous n'importez pas les modules et paquets de chemins arbritary Au lieu de cela, vous en python utiliser des paquets et des importations absolues, ce qui évitera tous les problèmes futurs.
Exemple:
créer les fichiers suivants:
MyApp\myapp\__init__.py
MyApp\myapp\utils\__init__.py
MyApp\myapp\utils\charts.py
MyApp\myapp\model\__init__.py
MyApp\myapp\view\__init__.py
MyApp\myapp\controller\__init__.py
MyApp\run.py
MyApp\setup.py
MyApp\README
Les fichiers doivent être vides à l'exception de ceux:
MyApp\myapp\utils\charts.py:
class GChartWrapper(object):
def __init__(self):
print "DEBUG: An instance of GChartWrapper is being created!"
MyApp\myapp\view\__init__.py:
from myapp.utils.charts import GChartWrapper
def start():
c = GChartWrapper() # creating instance of the class
MyApp\run.py:
from myapp.view import start
start()
C'est tout! Lorsque vous exécutez votre point d'entrée (run.py
), il appelle une fonction sur la vue et crée une instance de la classe GChartWrapper. En utilisant cette structure, vous pouvez importer n'importe quoi n'importe où et l'utiliser.
En complément, dans MyApp\setup.py
vous écrivez un programme d'installation pour le package MyApp \ myapp. Utilisez distutils pour l'écrire:
from distutils.core import setup
setup(name='MyApp',
version='1.0',
description='My Beautiful Application',
author='Martin',
author_email='[email protected]',
url='http://stackoverflow.com/questions/1003843/',
packages=['myapp'],
scripts=['run.py']
)
C'est suffisant. Maintenant, lorsque les utilisateurs téléchargent le dossier MyApp, ils peuvent simplement l'installer en utilisant setup.py et l'exécuter en utilisant run.py. Distutils peut générer des paquets dans un certain nombre de formats, y compris Windows installable .EXE
C'est la manière standard de distribuer des paquets/applications python.
J'essaie d'utiliser GChartWrapper sur App Engine, donc je ne peux pas vraiment lancer l'installation. Merci! :) – Martin