Python从模块子目录导入所有内容
我想从一个子目录中导入所有文件,所以我想在那个子目录里写一个 __init__.py
文件来导入这些文件。但是,当我这么做的时候,似乎什么都没有被导入。
文件结构:
prog.py
module/
__init__.py
code.py
prog.py
的代码: pass
__init__.py
的代码: import code
code.py
的代码: print('hello')
当我运行 prog.py
的时候,什么都没有发生。为什么没有打印出 hello
,有没有更好的方法可以轻松导入子目录中的所有内容?
3 个回答
2
假设你有这样的文件结构:
prog.py
module/
__init__.py
code.py
那么使用 import module
这个命令会导入 module/__init__.py
里的代码。而如果你使用 import module.code
或者 from module import code
,那么就会导入 module/code.py
里的代码,并且在本地会用 "module.code" 或者 "code" 这个名字来引用它。
4
如果你有以下这种结构:
package
__init__.py
module.py
在 __init__.py
文件里,你可以尝试这样做:
import package.module
或者这样做:
from . import module
这样一来,如果 package
在你的 PYTHONPATH
里,你就能得到预期的效果:
>>> import package
hello
3
把这个放在 prog.py
文件里:
import module
Python 只会加载那些你已经导入的包或模块。
要让它正常工作,你可能还需要参考 jcollado 的回答。