python 中的导入实际上是如何工作的?
How importing actually works in python?
在我的工作目录中,我有 python3 个这样的文件
/Path/to/cwd/main.py
/Path/to/cwd/Folder/one.py
/Path/to/cwd/Folder/two.py
所以我有一个 main.py 这样的文件
import Folder.one as one
#Do something
在 one.py 我有这样的代码
import two
#Some functions defined locally utilizing functions written in two.py
if __name__ == '__main__':
#Code for testing Functions
当我运行one.py时,它运行没问题。但是当我运行main.py时,它抛出一个错误
ModuleNotFoundError: No module named 'two'
理想情况下,我根本不会想到会出现这样的错误。
当我将导入语句从 import two
更改为 import Folder.two
时,它起作用了。但我想以其他方式做到这一点,而不会对此类导入语句产生太大影响。如何实现?
为了让 python 解释器知道哪些目录包含要加载的代码,您需要包含一个 __init__.py
文件。
查看 this answer 以了解有关如何导入包的更多信息。
在第二次导入的情况下,要访问该方法,您需要使用此语法。
from .two import *
在我的工作目录中,我有 python3 个这样的文件
/Path/to/cwd/main.py
/Path/to/cwd/Folder/one.py
/Path/to/cwd/Folder/two.py
所以我有一个 main.py 这样的文件
import Folder.one as one
#Do something
在 one.py 我有这样的代码
import two
#Some functions defined locally utilizing functions written in two.py
if __name__ == '__main__':
#Code for testing Functions
当我运行one.py时,它运行没问题。但是当我运行main.py时,它抛出一个错误
ModuleNotFoundError: No module named 'two'
理想情况下,我根本不会想到会出现这样的错误。
当我将导入语句从 import two
更改为 import Folder.two
时,它起作用了。但我想以其他方式做到这一点,而不会对此类导入语句产生太大影响。如何实现?
为了让 python 解释器知道哪些目录包含要加载的代码,您需要包含一个 __init__.py
文件。
查看 this answer 以了解有关如何导入包的更多信息。
在第二次导入的情况下,要访问该方法,您需要使用此语法。
from .two import *