Модули
Q: Как получить список загруженных модулей?
A:outText = ""
for key in sys.modules.keys():
outText += key + "\n"
Q: Как загрузить модуль, который лежит не в папке скрипта?
A:Добавить путь поиска модулей:
sys.path.append('/mypath')
Но это не очень хороший способ. Если в другом проекте нужно будет использовать другой модуль с тем же именем, начнется каша.
Q: Как загрузить модуль с именем, содержащим недопустимые символы?
A:module=__import__('my-module-name')
my_module_name = getattr(module, 'my-module-name')
Q: Как удалить модуль из списка загруженных?
A:try:
del sys.modules['my_module_name']
except:
pass
Q: Как загрузить модуль с нетривиальным именем, находящийся в нетривиальном месте?
A:Воспользоваться вот такой милой процедурой:
import imp
def import_module(name, path):
# Fast path: see if the module has already been imported.
try:
return sys.modules[name]
except KeyError:
pass
# If any of the following calls raises an exception,
# there's a problem we can't handle -- let the caller handle it.
fp, pathname, description = imp.find_module(name, path)
try:
return imp.load_module(name, fp, pathname, description)
finally:
# Since we may exit via an exception, close fp explicitly.
if fp:
fp.close()
mod_python
Q: Как получить реальный путь до скрипта на сервере?
A:def index(req):
import os
from mod_python import apache
req.add_common_vars()
pathname = os.path.dirname(req.subprocess_env['SCRIPT_FILENAME'])
return pathname
Q: Как посмотреть доступный список переменных окружения на сервере?
A: С помощью такого скрипта:
# -*- coding: UTF-8 -*-
from mod_python import apache
def index(req):
req.add_common_vars()
result = ""
for key in req.subprocess_env.keys():
result += key + "=" + req.subprocess_env[key] + "\n"
return result