我在文件夹
my_module.py
中有一个名为 ~/my_module
的 Python 模块。我想从 Python 解释器调用这个模块,但我不知道它的目录。我跑:
import os
os.chdir(os.path.expanduser("~/my_module"))
import my_module
并且失败了。但如果我使用
from ... import ...
,那么它就有效:
import os
os.chdir(os.path.expanduser("~/my_module"))
from my_module import my_module
如果我将文件夹的名称更改为与模块的名称不同,则可以直接导入。这是为什么?
默认情况下,该文件夹中的文件在模块中不可用。
当您在代码中输入
import xyz
时,可能会发生以下两种情况之一:
xyz.py
,那么这个文件就会被导入xyz
的文件夹,则该文件夹内的文件__init__.py
将被导入默认情况下不导入除
__init__.py
之外的其他文件。如果您想保持这样的文件结构,您应该在 __init__.py
文件夹中添加一个文件 my_module
并在其中放入以下内容:
from . import my_module
from .
表示python将在当前目录中查找该文件。然后,当在主文件中调用 import my_module
时,my_module
将具有一个属性 my_module
,它包含 my_module/my_module.py
中定义的所有内容。
(你应该考虑重命名这个......)
有什么不清楚的地方请告诉我