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

2024-03-25

我正在尝试使用 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.MySQLConnection. Application.App还进口Engine.Errors and Views.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

So Blog需要在 Python 搜索模块的目录列表中(sys.path)。这可以通过多种方式安排。

  1. 由于您是通过以下方式启动应用程序的python start.py、目录 含有start.py会自动添加到搜索路径中。所以 你可以改变

    from Blog.Views import Home
    

    to

    from Views import Home
    
  2. 另一种选择是搬家start.py上升一级,脱离Blog目录。然后当你打电话时python start.py, 这 目录包含start.py也将是目录 含有Blog。所以Python会发现Blog执行时from Blog.Views ...

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法让导入在 web.py 项目中工作 的相关文章

随机推荐