Python中有没有类似PHP include()函数的替代函数?
我的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 个回答
你通常会通过 import
来引入其他文件中的代码,这些文件被称为模块。
在Python中,你不是用“包含”,而是用“导入”。而且,你导入的不是“文件和目录”,而是“模块和包”。这些模块和包通常(但并不总是)是Python路径中某个地方的文件和目录。因此,常见的做法是把所有的模块放在一个包里,用户需要把这个包放到Python路径中,然后从那里导入模块。虽然可以导入“文件”,但不太推荐这样做。
如果你的config
模块是你库的一部分,或者是内部配置或网站配置,你需要创建一个新的包,名字和你的项目一样,把config
和其他模块放在里面。另外,由于Python使用的模块/包结构,创建一个包含模块的includes
目录并不太好用。
如果你的config.py
文件是用户配置的,你可以看看ConfigParser
模块,或者使用第三方的cfgparse
。
在 includes
文件夹里创建一个空文件 __init__.py
。
在 test.py
文件中,通过 import
来调用 config.py
。
你可以这样写:from includes import config
如果 config
里面有一个叫 foo
的函数,你可以这样调用它:
config.foo()
可以参考文档(如 The MYYN 所提到的)