项目模块导入 - Python2.7 [初学者]

时间:2018-05-27 15:56:51

标签: python linux ubuntu wxpython wxwidgets

它是我在Python中的第一个项目,由于某种原因,我无法导入我从项目的根目录中创建的模块。

项目结构如下

  • 项目

    • UI
      • 初始化的.py
      • MainWindow.py
    • main.py

在main.py中我试图从MainWindow.py导入一个类:

# Python
import sys

# ui
import wx

# Own files
import ui.MainWindow


def main():
    app = wx.App()
    MainWindow(None, title="Internet HW")
    app.MainLoop()


main()

但是我收到了一个错误:

  

ImportError:没有名为ui.MainWindow的模块

MainWindow.py:

# UI
import wx


class MainWindow(wx.Frame):

    def __init__(self, parent, title):
        super(MainWindow, self).__init__(parent, title=title, size=(600, 600))

    def InitUI(self):
        self.Centre()
        self.Show()

我知道这是一个新手问题,但我无法从我所读到的内容中解决这个问题。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

您要导入的模块位于不同的文件夹中,因此您应该执行以下操作:

from ui import MainWindow

您的main.py文件应位于 Project

  • 项目
    • UI
      • __init__.py
      • MainWindow.py
    • main.py

以下是python package

的示例

答案 1 :(得分:0)

没有理由您的代码无法正常显示。

在命令行中,您可以运行python -c "import ui; print dir(ui);",它会显示 ui 模块中的所有可用对象。

  • 如果该命令出错,则子文件夹上可能存在权限问题。它也可能是一个预编译的 .pyc 文件的问题 - 尝试删除Project和ui文件夹中的所有文件。
  • 如果它只显示['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']等内置函数,则 ui 模块中的__init__.py文件可能存在问题。
  • 如果显示您无法识别的对象,则可能会安装其他正在导入的 ui 模块。尝试将模块名称更改为 myui 或类似名称,然后从那里导入。