python从同一文件夹导入失败
我的目录结构如下:python从同一文件夹导入失败,python,import,importerror,Python,Import,Importerror,我的目录结构如下: |- project |- commands.py |- Modules | |- __init__.py | |- base.py | \- build.py \- etc.... 我在\uuuu init\uuuuuuy.py commands = [] hooks = [] def load_modules(): """ dynamically loads commands from the /modules subdirectory
|- project
|- commands.py
|- Modules
| |- __init__.py
| |- base.py
| \- build.py
\- etc....
我在\uuuu init\uuuuuuy.py
commands = []
hooks = []
def load_modules():
""" dynamically loads commands from the /modules subdirectory """
path = "\\".join(os.path.abspath(__file__).split("\\")[:-1])
modules = [f for f in os.listdir(path) if f.endswith(".py") and f != "__init__.py"]
print modules
for file in modules:
try:
module = __import__(file.split(".")[0])
print module
for obj_name in dir(module):
try:
potential_class = getattr(module, obj_name)
if isinstance(potential_class, Command):
#init command instance and place in list
commands.append(potential_class(serverprops))
if isinstance(potential_class, Hook):
hooks.append(potential_class(serverprops))
except:
pass
except ImportError as e:
print "!! Could not load %s: %s" % (file, e)
print commands
print hooks
我试图让
\uu init\uuuuuuuuuuuuuuuuuuuuuuuuupy
将适当的命令和钩子加载到给定的列表中,但是我总是在模块=\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu(file.split(.“”[0])
处遇到导入错误,即使和base.py等都在同一个文件夹中。我已经验证过,任何模块文件中的任何内容都不需要\uuu init\uuuu.py
中的任何内容,因此我真的不知道该怎么做。您所缺少的只是在系统路径上有模块。加
import sys
sys.path.append(path)
在路径=…
行之后,应该设置。以下是我的测试脚本:
import os, os.path, sys
print '\n'.join(sys.path) + '\n' * 3
commands = []
hooks = []
def load_modules():
""" dynamically loads commands from the /modules subdirectory """
path = os.path.dirname(os.path.abspath(__file__))
print "In path:", path in sys.path
sys.path.append(path)
modules = [f for f in os.listdir(path) if f.endswith(".py") and f != "__init__.py"]
print modules
for file in modules:
try:
modname = file.split(".")[0]
module = __import__(modname)
for obj_name in dir(module):
print '%s.%s' % (modname, obj_name )
except ImportError as e:
print "!! Could not load %s: %s" % (file, e)
print commands
load_modules()
\uuuuu导入\uuuuu
有许多需要注意的细节,尤其是与fromlist
有关的细节。试着搜索一下,看看你是否能找到答案。path=os.path.dirname(os.path.abspath(_文件__))
(更正确,顺便说一下跨平台)从何处以及如何调用load_modules()
?在初始化期间从commands.py调用load_modules