我已将代码拆分为多个文件。我已将所有其他文件中的所有函数导入admin.py。让我们说我想调用函数XYZ。如果我将函数路径作为admin/XYZ
,它会将错误视为无效函数,为此我必须将路径指定为file_with_XYZ_function/XYZ
。
有没有办法克服这个问题,只需从一个文件中调用所有导入的函数
答案 0 :(得分:2)
注意:这可能无法回答您的问题,因为我不确定我理解您的问题......
但是如果你想将一些代码放入(共享)模块并将其包含在几个控制器中,我建议你看一下{{第四章 The Core ) 3}}并搜索local_import
。
对于这种情况,web2py 提供了另一种导入模块的方法 以这种方式表示全局的sys.path 没有改变:把它们放在 应用程序的“modules”文件夹。 一方面的好处是该模块 将自动复制和 与应用程序一起分发; 但是,有一定的 适用的限制。的web2py 提供了local_import函数 必须用于从中导入模块 “modules”文件夹。
模块的导入取决于模块以及web2py可以找到它们的位置。如果它是web2py可以在sys.path或web2py / site-packages中找到的标准模块import modulename
应该按预期工作。
对于您应用的本地模块,web2py还提供其他内容:applications/appname/modules
可以使用local_import
导入这些模块。
mymodule = local_import(themodule)
这将在apps local modules文件夹中导入名为themodule的模块,并以名称mymodule提供。请注意,local_import支持另外两个参数:reload和app。在开发期间,模块代码经常更改,所以不要忘记告诉web2py在每个请求时使用参数reload=True
重新加载模块,否则除非重新启动web2py,否则您将看不到更改。
答案 1 :(得分:0)
你可以在modules文件夹中创建python文件并导入它们就像你在控制器中导入python库一样。但你必须提供这些文件的路径,如
from applications.myApp.modules.myModule import *
这是我的包装解决方案。现在你可以通过调用他们的名字
来使用你的功能myFunction