python - 无法让导入在 web.py 项目中工作

标签 python module web.py importerror

我正在尝试使用 Web.Py 在 Python 中创建一个基本的博客应用程序。一开始我没有目录结构,但很快我就需要一个。所以我创建了这个结构:

Blog/
├── Application/
│   ├── App.py
│   └── __init__.py
|
├── Engine/
│   ├── Connection/
│   │   ├── __init__.py
│   │   └── MySQLConnection.py
│   ├── Errors.py
│   └── __init__.py
├── __init__.py
├── Models/
│   ├── BlogPostModel.py
│   └── __init__.py
├── start.py
└── Views/
    ├── Home.py
    └── __init__.py

start.py 导入 Application.App,其中包含 Web.Py 内容并导入 Blog.Models.BlogPostModel,其中导入 Blog.Engine.Connection.MySQLConnectionApplication.App 还导入 Engine.ErrorsViews.Home。所有这些导入都发生在构造函数内部,并且所有文件内的所有代码都在类中。当我运行 python start.py 时,其中包含以下三行代码:

from Application import App
app = App.AppInstance()
app.run()

打印以下堆栈跟踪:

Blog $ python start.py 
Traceback (most recent call last):
  File "start.py", line 2, in <module>
    Blog = App.AppInstance()
  File "/home/goktug/code/Blog/Application/App.py", line 4, in __init__
    from Blog.Views import Home
ImportError: No module named Blog.Views

但根据我从一些研究中了解到的情况,这应该运行,至少直到它到达 App.py 之后的内容。 谁能告诉我我在哪里犯了错误?(我可以根据要求提供更多代码,但现在我就停在这里,因为这个问题变得越来越困惑)。

最佳答案

App.py 包含语句

from Blog.Views import Home

因此 Blog 需要位于 Python 搜索模块的目录列表中 (sys.path)。这可以通过多种方式进行安排。

  1. 由于您使用 python start.py 启动应用程序,因此该目录 包含 start.py 的内容会自动添加到搜索路径中。所以 你可以改变

    from Blog.Views import Home
    

    from Views import Home
    
  2. 另一种选择是将 start.py 向上移动一级,从 博客目录。然后当你调用python start.py时, 包含 start.py 的目录也将是该目录 包含博客。所以Python在执行from时会找到Blog 博客. View ...

  3. 最后,您可以将 Blog 目录添加到您的 PYTHONPATH 环境中 变量。

关于python - 无法让导入在 web.py 项目中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13221021/

相关文章:

python - Apache 中 web.py 的全局变量用法

python - 复制类实例

javascript - npm:在 linux ubuntu 中使用 npm 命令时出现找不到模块 semver 错误

visual-studio - Visual Studio 的/实验 :module conflicting with Vulkan's core. h 导致语法错误 - 编译失败

javascript - 找不到模块 '.../models/user' nodejs

python - 尽管已安装,但我得到 'ImportError: No module named web'

python - POST 处理程序返回的页面被忽略 - 得到空白响应 (web.py)

python - 字典中的 NumPy 切片表示法

python - celery 和celeryd之间的混淆

javascript - 在 chrome 扩展中使用 channel google app engine