Вызов функции с использованием импорта в web2py - PullRequest
1 голос
/ 02 июля 2011

Я разделил код на несколько файлов. Я импортировал все функции из всех других файлов в admin.py. Допустим, я хочу вызвать функцию XYZ. Если я даю путь к функции как admin/XYZ, это дает мне ошибку как недопустимую функцию, и для этого я должен указать путь как file_with_XYZ_function/XYZ.

Есть ли способ решить эту проблему и просто вызвать все импортированные функции из одного файла

Ответы [ 2 ]

2 голосов
/ 06 июля 2011

ПРИМЕЧАНИЕ. Возможно, он не отвечает на ваш вопрос, поскольку я не уверен, что понимаю ваш вопрос ...

Но если вы хотите поместить некоторый код в (общий) модуль и включить его из нескольких ваших контроллеров, я предлагаю вам взглянуть на четвертую главу ( The Core ) web2py book и поиск по local_import.

Для такой ситуации web2py предоставляет другой способ импорта модулей таким образом, что глобальный sys.path не изменяется: помещая их в папка "модули" приложения. Одним из преимуществ является то, что модуль будут автоматически скопированы и распространяется вместе с приложением; Тем не менее, есть определенные ограничения, которые применяются. web2py предоставляет функцию local_import, которая должен использоваться для импорта модулей из папка "modules".

Импорт модулей зависит от модулей и от того, где web2py может их найти. Если это стандартный модуль, который web2py может найти в sys.path или в web2py / site-packages, import modulename должен работать как положено.

Для локальных модулей вашего приложения web2py предлагает что-то еще: applications/appname/modules

Эти модули можно импортировать с помощью local_import.

mymodule = local_import(themodule)

Импортирует модуль с именем themodule в папку локальных модулей приложений и делает его доступным под именем mymodule. Обратите внимание, что local_import поддерживает два дополнительных аргумента: перезагрузка и приложение. Во время разработки код модуля часто меняется, поэтому не забывайте указывать web2py перезагружать модуль при каждом запросе с параметром reload=True, иначе вы не увидите изменения, если не перезапустите web2py.

0 голосов
/ 27 июля 2011

вы можете создавать файлы Python в папке модулей и импортировать их так же, как вы импортируете библиотеки Python в свои контроллеры. Но вы должны указать путь к этим файлам, например

 from applications.myApp.modules.myModule import *

это моё решение для моих обёрток. теперь вы можете использовать свои функции, называя их имя

myFunction
...