Python中从父目录导入模块的可移植方法

2024-06-15 01:41:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道这是一个老掉牙的话题,但python中的导入机制仍然让大众感到困惑。我想要的是能够导入父目录中的自定义模块,以允许我将项目转移到另一个环境并使所有导入工作正常。 例如,这样的结构:

repo 
  |--- folder1
  |       |--- script1.py
  |--- folder2       
  |       |--- script2.py 
  |--- utils
          |--- some-util.py

如何从script1script2中的some-util.py导入?我的想法是,我可以将repo克隆到远程主机,并从文件夹1和文件夹2运行脚本,这些文件夹可能具有some-util.py的共享依赖项,但我不想在运行之前运行任何东西。我希望能够:

连接到接线盒

git clone repo
python repo/folder1/script1.py

脚本1和脚本2的内容:

import some-util

<code>

编辑: 我忘了提到,有时脚本需要从另一个目录运行,如: /nas/some_folder/repo/folder1/script1.py args..

此外,该框仅限于python 2.7.5


Tags: 模块项目py目录脚本文件夹utilrepo
1条回答
网友
1楼 · 发布于 2024-06-15 01:41:00

技巧是将脚本实现为模块(阅读herehere了解python -m开关的含义)

这是一个结构,请注意,每个目录都包含一个名为__init__.py的(空文件):

repo/
|____utils/
| |____someutil.py
| |___ __init__.py
|___ __init__.py
|____folder1/
  |____script1.py
  |___ __init__.py

utils.someutil可能包含以下内容:

def say_hello():
    return "Hello World."

您的script1.py可能包含以下内容:

from ..utils.someutil import say_hello

if __name__ == "__main__":
    print(say_hello())

然后运行以下命令:

python -m repo.folder1.script1

。。。产生:

Hello World.

相关问题 更多 >