понедельник, 26 марта 2012 г.

Всякая всячина о Python

Модули


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

Комментариев нет:

Отправить комментарий