我正在尝试使用 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
)。这可以通过多种方式安排。
-
由于您是通过以下方式启动应用程序的python start.py
、目录
含有start.py
会自动添加到搜索路径中。所以
你可以改变
from Blog.Views import Home
to
from Views import Home
另一种选择是搬家start.py
上升一级,脱离Blog
目录。然后当你打电话时python start.py
, 这
目录包含start.py
也将是目录
含有Blog
。所以Python会发现Blog
执行时from
Blog.Views ...
最后,您可以添加Blog
目录到您的 PYTHONPATH 环境
多变的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)