我有以下文件安排:
python
|--main.py
|files
|-----folder1
|-----a.py,a1.py.....
|-----folder2
|-----b.py,b1.py....
Run Code Online (Sandbox Code Playgroud)
我想将模块a和b.py导入main.py. 为此,我在main.py中使用了以下命令:
a = 'C:/python/files/folder1'
sys.path.insert(0, a)
from files.folder1 import *
Run Code Online (Sandbox Code Playgroud)
但是,我无法从folder1导入模块(类似于folder2).我收到一个错误:
No module named files.folder1
Run Code Online (Sandbox Code Playgroud)
我不能使用import命令,因为folder1,folder2中有很多python文件......等等.
我在这里错过了什么吗?
Yun*_* Ma 31
快速回答:
将文件__init__.py(可以为空)添加到文件夹文件,folder1和folder2.然后你得到了一个带有子包folder1和folder2的包文件.在此之后,您可以从main.py导入,如下所示:
from files.folder1 import *
Run Code Online (Sandbox Code Playgroud)
mjg*_*py3 20
当我在Python 2.7中执行此操作时,我使用:
import sys
sys.path.append('C:/python/files/folder1')
import a
import a1
Run Code Online (Sandbox Code Playgroud)
UPDATE
这是我为将目录中的所有模块导入字典而构建的hack:
import os
import sys
dir_of_interest = 'C:/python/files/folder1'
modules = {}
sys.path.append(dir_of_interest)
for module in os.listdir(dir_of_interest):
if '.py' in module and '.pyc' not in module:
current = module.replace('.py', '')
modules[current] = __import__(current)
Run Code Online (Sandbox Code Playgroud)
我刚刚建造它,它非常hacky但它可能更像你想要的东西.所以,要访问你想要的模块,而不是说module_name.thing你会说modules["module_name"].thing