mod_wsgi/python sys.path.exend问题
我正在编写一个mod_wsgi脚本。。首先是:mod_wsgi/python sys.path.exend问题,python,apache,mod-wsgi,Python,Apache,Mod Wsgi,我正在编写一个mod_wsgi脚本。。首先是: sys.path.extend(map(os.path.abspath, ['/media/server/www/webroot/'])) 但我注意到,每次更新脚本时,sys.path变量都会随着此扩展的副本不断增加: ['/usr/lib64/python25.zip' '/usr/lib64/python2.5' '/usr/lib64/python2.5/plat-linux2' '/usr/lib64/python2.5/lib-tk'
sys.path.extend(map(os.path.abspath, ['/media/server/www/webroot/']))
但我注意到,每次更新脚本时,sys.path变量都会随着此扩展的副本不断增加:
['/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']
每次我重新启动apache时,它都会重置。。有没有办法确保这不会发生?我希望模块路径只加载一次 一个相当简单的方法是在扩展路径之前检查路径是否已被扩展:
path_extension = map(os.path.abspath,['/media/server/www/webroot/'])
if path_extension[0] not in sys.path:
sys.path.extend(path_extension)
但是,这样做的缺点是,在检查是否已扩展时,总是扫描大部分sys.path
。一个更快但更复杂的版本如下:
path_extension = map(os.path.abspath,['/media/server/www/webroot/'])
if path_extension[-1] not in reversed(sys.path):
sys.path.extend(path_extension)
但是,更好的解决方案可能是将路径扩展添加到PYTHONPATH
环境变量中,或者将.pth
文件放入站点包
目录中:
一种相当简单的方法是在扩展路径之前检查路径是否已被扩展:
path_extension = map(os.path.abspath,['/media/server/www/webroot/'])
if path_extension[0] not in sys.path:
sys.path.extend(path_extension)
但是,这样做的缺点是,在检查是否已扩展时,总是扫描大部分sys.path
。一个更快但更复杂的版本如下:
path_extension = map(os.path.abspath,['/media/server/www/webroot/'])
if path_extension[-1] not in reversed(sys.path):
sys.path.extend(path_extension)
但是,更好的解决方案可能是将路径扩展添加到PYTHONPATH
环境变量中,或者将.pth
文件放入站点包
目录中:
无需担心自己检查或使用abspath。使用“站点”模块的内置功能。它将自动处理这些问题和其他问题(如pth文件):
import site
site.addsitedir('/media/server/www/webroot/')
(此函数仅在Python 2.6中有文档记录,但它几乎一直存在。)无需自己检查或使用abspath。使用“站点”模块的内置功能。它将自动处理这些问题和其他问题(如pth文件):
import site
site.addsitedir('/media/server/www/webroot/')
(该函数仅在Python 2.6中有文档记录,但它几乎一直存在。)mod_wsgi涵盖了这一点。mod_wsgi涵盖了这一点。+1.pth文件非常棒。ApacheConfig中设置的环境变量也是如此。+1.pth文件非常棒。apache配置中设置的环境变量也是如此。