使用web2py中的import进行函数调用

时间:2011-07-02 12:32:32

标签: python function import call web2py

我已将代码拆分为多个文件。我已将所有其他文件中的所有函数导入admin.py。让我们说我想调用函数XYZ。如果我将函数路径作为admin/XYZ,它会将错误视为无效函数,为此我必须将路径指定为file_with_XYZ_function/XYZ

有没有办法克服这个问题,只需从一个文件中调用所有导入的函数

2 个答案:

答案 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