Python中有没有类似PHP include()函数的替代函数?

2 投票
3 回答
2992 浏览
提问于 2025-04-16 09:03

我的Python项目路径是 /project,里面有这些文件:

/project/test.py
/project/templates/
/project/includes/
/project/includes/config.py
# config.py
import os
template_path = os.path.join(os.path.dirname(__file__), "templates")

当我在 test.py 中使用 execute() 函数来引入 config.py 时,实际上执行的是 /project/includes/config.php 文件,结果被返回到 /project/includes/test.py,这样 template_path 变量就被保存为 /project/includes/templates/,但在这个位置找不到 templates 文件夹。
我想要一个函数,可以从 /project/test.py 中引入 /project/includes/config.py,并通过 test.py 执行 /project/includes/config.py 中的所有函数。

3 个回答

2

你通常会通过 import 来引入其他文件中的代码,这些文件被称为模块。

3

在Python中,你不是用“包含”,而是用“导入”。而且,你导入的不是“文件和目录”,而是“模块和包”。这些模块和包通常(但并不总是)是Python路径中某个地方的文件和目录。因此,常见的做法是把所有的模块放在一个包里,用户需要把这个包放到Python路径中,然后从那里导入模块。虽然可以导入“文件”,但不太推荐这样做。

如果你的config模块是你库的一部分,或者是内部配置或网站配置,你需要创建一个新的包,名字和你的项目一样,把config和其他模块放在里面。另外,由于Python使用的模块/包结构,创建一个包含模块的includes目录并不太好用。

如果你的config.py文件是用户配置的,你可以看看ConfigParser模块,或者使用第三方的cfgparse

3

includes 文件夹里创建一个空文件 __init__.py

test.py 文件中,通过 import 来调用 config.py

你可以这样写:from includes import config

如果 config 里面有一个叫 foo 的函数,你可以这样调用它:

config.foo()

可以参考文档(如 The MYYN 所提到的)

撰写回答