Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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 无法使导入在web.py项目中工作_Python_Module_Web.py_Importerror - Fatal编程技术网

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

Python 无法使导入在web.py项目中工作,python,module,web.py,importerror,Python,Module,Web.py,Importerror,我正在尝试使用Web.Py用Python创建一个基本的博客应用程序。我一开始没有一个direcotry结构,但很快我就需要一个。所以我创建了这个结构: Blog/ ├── Application/ │   ├── App.py │   └── __init__.py | ├── Engine/ │   ├── Connection/ │   │   ├── __init__.py │   │   └── MySQLConnection.py │   ├── Errors.py │   └── _

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

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
视图.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
Blog$python start.py
回溯(最近一次呼叫最后一次):
文件“start.py”,第2行,在
Blog=App.AppInstance()
文件“/home/goktug/code/Blog/Application/App.py”,第4行,在__
从Blog.Views导入主页
ImportError:没有名为Blog.Views的模块

但根据我从一些研究中了解到的情况,这应该运行,至少在App.py之后达到某种程度。谁能告诉我是在哪里犯的错误吗?(我可以根据请求提供更多的代码,但现在我就到此为止,因为这个模块越来越复杂了)。

只有当模块的父目录(而不是
Blog
本身)位于python路径上时,才能导入模块
Blog

如果您像这样从
博客
目录运行程序,您只能像使用
应用程序一样直接导入
视图
。应用程序

from Views import Home
而不是

from Blog.Views import Home

在您的
应用程序/App.py
App.py
中包含以下语句

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

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

    from Blog.Views import Home
    

  • 另一个选项是将
    start.py
    博客
    目录。然后,当您调用
    python start.py
    时 包含
    start.py
    的目录也将是该目录 包含
    博客
    。因此,当从执行
    时,Python会找到
    Blog
    Blog.Views…

  • 最后,您可以将
    Blog
    目录添加到PYTHONPATH环境中 变数


  • 谢谢,这是可行的,但是当我运行应用程序时,会抛出一个关键错误:at/u'Home',听起来像是代码中的错误,没有显示出来(与这个问题无关)。请打开一个新问题并发布更多详细信息(完整堆栈跟踪和错误消息以及相关代码)。谢谢,我现在正在写问题。
    from Views import Home