func
должно быть в месте, которое находится в PYTHONPATH
(sys.path), например web2py/site-packages
.Это правильный Pythonic способ сделать это.
Если вместо этого вы хотите упаковать свой модуль с вашим приложением , то поместите его в applications/yourapp/modules
, затем вы должны импортировать его с помощью func = local_import('func')
Q: Люди, которые плохо знакомы с web2py, могут задаться вопросом: зачем использовать local_import()
, если первый метод является стандартным в мире Python?
A: Потому что в web2py вы можете устанавливать новые приложения без перезагрузки сервера.Приложения не могут изменить sys.path
, потому что он не ориентирован на многопотоковое исполнение и будет зависеть от порядка установки этих приложений.Более того, для двух приложений могут потребоваться модули с одинаковым именем, но разными (например, разные версии).Мы хотим избежать конфликтов между этими модулями и другими модулями, которые могут быть предварительно установлены.
local_import()
- это обходной путь, который позволяет вам отправлять некоторые модули вместе с вашими приложениями и импортировать их без добавления папки в * 1023.* и вызывает конфликт версий.