web2py无法识别modules目录中的模块

时间:2012-07-31 08:12:30

标签: python web2py

我将模块复制到web2py中应用程序的“modules”文件夹中。当我尝试在任何控制器内的任何函数中导入模块时,我收到以下错误:

<type 'exceptions.ImportError'> No module named module_name

无论使用何种模块,我都会收到该错误。但是,如果我将相同的模块复制到“site-packages”并导入它,它就能完美运行。

我发现“sys.path”不包含modules文件夹,但包含“site-packages”文件夹。

如何将模块文件夹添加到特定于web2py的“sys.path”中,还是有其他方法可以解决此问题?

5 个答案:

答案 0 :(得分:4)

终于找到了解决我问题的方法。

似乎为了使用import module_name导入模块目录中的模块,应用程序的名称必须全部小写。

以前,我的应用程序名称为projectX,但当我将其更改为projectx时,import module_name的工作方式应该如此。

我还发现,无论应用程序名称如何,在导入模块时明确说明应用程序名称也都有效。当应用程序的名称为import applications.projectX.modules.module_name时,projectX也适用于我。

答案 1 :(得分:1)

您是否已尝试使用本地导入?

这样的事情:

twitter = local_import('twitter')

其中twitter是我保存在modules文件夹中的模块的名称。

干杯

答案 2 :(得分:0)

它应该完全按照你的预期工作,它对我有用。无需更改sys.path。 web2py照顾这个。它希望在该目录中找到模块。 什么版本的web2py?你是从源代码运行的? (它下载源代码并将其作为python web2py启动,或者您使用的是预编译的二进制分发版?) 当你说'#34;在控制器内的任何功能中导入该模块时,你究竟想要做什么? 对我来说,在我的默认控制器顶部或模型中的简单导入适用于当前的稳定版本。

答案 3 :(得分:0)

这是允许PyCharm为我解析引用的导入格式:

import applications.dashboard.modules.user_info as user_info

答案 4 :(得分:0)

我找到的解决方法是确保应用程序是一个包。

例如,如果你有foo应用程序,你的树看起来像这样:

brew install boost-python --with-python3