从另一个目录导入的python模块失败

2024-03-29 15:22:49 发布

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

我使用sys.path.insert从Linux中的另一个目录导入了一个python模块,但是当我运行该模块时,它失败了。因为导入的模块正在尝试打开该模块的本地文件。请让我知道如何解决这个问题

users/adr/release/invoke.py  #this one fails with can’t open file ./config.ini

import sys

sys.path.insert(0, ‘/user/cdw/audit/’)

import audit_main

原始模块文件所在的路径

/user/cdw/audit/audit_main.py  # this module opens config.ini file to read pplication credentials.
/user/cdw/audit/config.ini

/user/cdw/audit/__ini__.py

Tags: 模块文件pathpyimportconfigmainsys
1条回答
网友
1楼 · 发布于 2024-03-29 15:22:49

当python加载模块时,它会将元数据添加到模块可以使用的全局命名空间中__file__是其.py文件的文件名-当这样的名称有意义时。您可以使用它来获取配置文件

import os
config_filename = os.path.join(os.path.dirname(__file__), "config.ini")

除非你不能。如果这是一个C扩展名文件,或者该文件位于其他一些包(如zip、egg或pyinstaller bundle或exe)中,则它可能无法工作。ini文件(我假设是用户可编辑的)可能需要位于模块目录之外的某个位置。如果将此.py作为可安装程序包的一部分,则它可能最终位于用户无法编辑的系统目录中。这可能不是本项目的问题,只是列出了一些考虑因素

相关问题 更多 >