Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在web2py中使用import调用函数_Python_Function_Import_Call_Web2py - Fatal编程技术网

Python 在web2py中使用import调用函数

Python 在web2py中使用import调用函数,python,function,import,call,web2py,Python,Function,Import,Call,Web2py,我已将代码拆分为多个文件。我已将所有其他文件中的所有函数导入admin.py。假设我想调用一个函数XYZ。如果我将函数的路径设置为admin/XYZ,则会将错误设置为无效函数,为此,我必须将路径设置为file\u和XYZ函数/XYZ 有没有办法克服这个问题,只需从一个文件中调用所有导入的函数注意:这可能无法回答您的问题,因为我不确定我是否理解您的问题 但是,如果您想将一些代码放入(共享)模块中,并从多个控制器中包含这些代码,我建议您阅读第四章(核心部分),然后搜索local\u import 对

我已将代码拆分为多个文件。我已将所有其他文件中的所有函数导入admin.py。假设我想调用一个函数XYZ。如果我将函数的路径设置为
admin/XYZ
,则会将错误设置为无效函数,为此,我必须将路径设置为
file\u和XYZ函数/XYZ


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

注意:这可能无法回答您的问题,因为我不确定我是否理解您的问题

但是,如果您想将一些代码放入(共享)模块中,并从多个控制器中包含这些代码,我建议您阅读第四章(核心部分),然后搜索
local\u import

对于这种情况,web2py 提供了另一种导入模块的方法 以这样的方式,全局sys.path 未更改:通过将其放置在 应用程序的“模块”文件夹。 一个好处是模块 将自动复制并 与应用程序一起分发; 然而,有一些是肯定的 适用的限制。web2py 提供一个本地_导入函数,该函数 必须用于从导入模块 “模块”文件夹

模块的导入取决于模块以及web2py可以在哪里找到它们。如果它是web2py可以在sys.path或web2py/站点包中找到的标准模块,则导入模块名应按预期工作

对于应用程序的本地模块,web2py还提供了其他功能:
applications/appname/modules

可以使用
local\u import
导入这些模块

mymodule=local\u导入(模块)


这将在“应用程序本地模块”文件夹中导入名为“模块”的模块,并使其在名为“mymodule”下可用。注意,local_import支持两个附加参数:reload和app。在开发过程中,模块代码经常更改,因此不要忘记告诉web2py在每次请求时使用参数
reload=True
重新加载模块,否则除非重新启动web2py,否则您将看不到更改

您可以在modules文件夹中创建python文件并导入它们,就像在控制器中导入python库一样。但是你必须给出这些文件的路径,比如

from applications.myApp.modules.myModule import * 从applications.myApp.modules.myModule导入* 这是我的包装解决方案。现在,您可以通过调用函数名来使用它们

myFunction
MyFunction您有XYZ作为文件名吗?哪种代码?你的密码?admin.py是您自己的函数还是更改了glion/admin.py核心文件?您的应用程序/模块下的admin/XYZ文件在哪里?很抱歉,我们需要更多信息。如果您在web2py邮件列表上提问,您将获得更好的支持。很抱歉造成混淆,我已经编辑了问题本身。admin.py是我自己的文件(在controllers中),我在该文件中导入了一个函数XYZ。我不能像调用admin.pyNote中定义的函数那样调用该函数,web2py控制器(和模型)文件不是Python模块,因此不能从它们导入。您应该将模块放在/app/modules文件夹中。你想达到什么目标?您是否只是为了组织目的而尝试将函数放入多个控制器文件中,但在URL中只需要一个控制器名称?在这种情况下,您可以通过URL重写功能实现您的目标。感谢URL重写功能,这正是我要寻找的。注意,从web2py 1.96.1开始,local_导入已被弃用。现在可以使用标准Python导入语句从/app/modules文件夹导入模块。例如,对于/app/modules/mymodule.py,只需执行
导入mymodule
。感谢您的回复。如果我必须从文件中的某个地方调用该函数,那么您所说的是真的。如果我想直接从导入它们的文件中使用相同的函数,则没有找到此类函数(有关更多详细信息,请参阅我的问题)您不能像文件中的本机函数那样调用这些函数,因为您导入的那些函数是在运行时导入的,因此您的服务器无法将请求定向到这些函数,因为它们不存在。作为最后手段,您可以将调用这些导入函数的伪函数放在内部。一切都发生了。这就是我们使用URL重写的地方:)