如何从python中的其他目录导入模块? [复制]
Posted
技术标签:
【中文标题】如何从python中的其他目录导入模块? [复制]【英文标题】:how to import module from other directory in python? [duplicate] 【发布时间】:2013-07-26 09:33:12 【问题描述】:这是我的目录树
Game/
a/
1.py
...
b/
2.py
在 2.py 中,我想从 1.py 中显示导入函数。首先我把两个文件放在同一个文件夹里没有问题。但是如何从其他位置导入?
【问题讨论】:
@Haidro 类似,但我正在寻找简单的方法(不创建 distutils 包)。 【参考方案1】:尝试使用imp
:
import imp
foo = imp.load_source('filename', 'File\Directory\filename.py')
这就像正常导入一样,现在可以使用导入的文件
然后你可以像这样使用你的名字(在本例中为foo
):
foo.method()
希望这就是你要找的东西!
你也可以试试这个:
import sys
sys.path.append('folder_name')
【讨论】:
【参考方案2】:你有两个选择:
将另一个文件夹添加到sys.path
并按名称导入
import sys
sys.path.append('../a')
import mod1
# you need to add `__init__.py` to `../a` folder
# and rename `1.py` to `mod1.py` or anything starts with letter
或者创建 distutils 包,然后你就可以像这样进行相对导入
from ..a import mod1
【讨论】:
【参考方案3】:确保在要从中导入的任何目录中都有一个 __init__.py
文件,然后您有 2 个选项;
例如您的代码现在将如下所示:
Game/
__init__.py
a/
__init__.py
1.py
...
b/
__init__.py
2.py
-
如果您的
Game
文件夹在您的 PYTHONPATH 中,您现在可以在 2.py
中执行 from Game.a import 1
或在 1.py
中反之亦然
from ..a import 1
即 relative import
【讨论】:
以上是关于如何从python中的其他目录导入模块? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
您可以从 github 存储库中的另一个目录导入 python 模块吗? [复制]
如何在其他类/模块中正确导入/使用我在 Python 中构建的类和模块? [复制]