从子目录python导入类

时间:2017-01-31 16:44:02

标签: python python-import

我一直在尝试导入一些在子目录中定义的python类。目录结构如下:

workspace/
    __init__.py
    main.py
    checker/
       __init__.py
       baseChecker.py
       gChecker.py

baseChecker.py看起来类似于:

import urllib
class BaseChecker(object):
    # SOME METHODS HERE

gChecker.py文件:

import baseChecker # should import baseChecker.py
class GChecker(BaseChecker): # gives a TypeError: Error when calling the metaclass bases
    # SOME METHODS WHICH USE URLLIB

最后是main.py文件:

import ?????
gChecker = GChecker()
gChecker.someStuff() # which uses urllib

我的目的是能够运行main.py文件并调用实例化checker/目录下的类。但我想避免从每个文件中导入urllib(如果可能的话)。

请注意,__init__.py都是空文件。

我已尝试在from checker.gChecker import GChecker中调用main.py,但ImportError: No module named checker.gChecker显示。

1 个答案:

答案 0 :(得分:2)

在发布的代码中,gChecker.py,您需要执行

from baseChecker import BaseChecker

而不是import baseChecker 否则你得到

  

NameError: name 'BaseChecker' is not defined

使用上面提到的文件夹结构,您不需要checker模块位于PYTHONPATH中,以便main.py可见 然后在main.y中你可以这样做:

from checker import gChecker.GChecker