我一直在尝试导入一些在子目录中定义的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
显示。
答案 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