Question

Je travaille sur un script mod_wsgi .. au début est:

sys.path.extend(map(os.path.abspath, ['/media/server/www/webroot/']))

Mais je l'ai remarqué, que chaque fois que je mets à jour le script du var sys.path ne cesse de croître avec les doublons de cette extension:

['/usr/lib64/python25.zip'
'/usr/lib64/python2.5'
'/usr/lib64/python2.5/plat-linux2'
'/usr/lib64/python2.5/lib-tk'
'/usr/lib64/python2.5/lib-dynload'
'/usr/lib64/python2.5/site-packages'
'/usr/lib64/python2.5/site-packages/Numeric'
'/usr/lib64/python2.5/site-packages/gtk-2.0'
'/usr/lib64/python2.5/site-packages/scim-0.1'
'/usr/lib/python2.5/site-packages'
'/media/server/www/webroot'
'/media/server/www/webroot'
'/media/server/www/webroot'
'/media/server/www/webroot']

Il remet à zéro chaque fois que je redémarre apache .. est-il un moyen pour vous assurer que cela ne se produit pas? Je veux que le chemin du module à charger une seule fois ..

Était-ce utile?

La solution

Pas besoin de vous soucier de vérifier ou d'utiliser abspath vous. Utilisez le du module « site » intégré addsitedir fonction. Il prendra soin de ces questions et d'autres (par exemple automatiquement les fichiers ièmes.):

import site
site.addsitedir('/media/server/www/webroot/')

(Cette fonction est uniquement documentée dans Python 2.6, mais il a à peu près toujours existé.)

Autres conseils

Une façon assez simple à faire est de vérifier si le chemin a déjà été étendue avant de l'étendre ::

path_extension = map(os.path.abspath,['/media/server/www/webroot/']) 
if path_extension[0] not in sys.path:
    sys.path.extend(path_extension)

Ceci a l'inconvénient, cependant, de balayer toujours par la plupart des sys.path lors de la vérification pour voir si elle a été prolongée. Un moyen plus rapide, bien plus complexe, version ci-dessous ::

path_extension = map(os.path.abspath,['/media/server/www/webroot/']) 
if path_extension[-1] not in reversed(sys.path):
    sys.path.extend(path_extension)

Une meilleure solution, cependant, est probablement soit ajouter le chemin des extensions à votre variable d'environnement PYTHONPATH ou mettre un fichier .pth dans votre répertoire site-packages:

http://docs.python.org/install/index.html

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