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

问题描述 投票:0回答:1

我已经使用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
python python-import pythonpath
1个回答
0
投票

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

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

除了您不能的时候。如果这是C扩展名文件,或者该文件位于zip或egg或pyinstaller捆绑包或exe之类的其他包装中,则可能无法使用。我认为用户可以编辑一个ini文件,该文件可能需要放在模块目录之外的某个位置。如果将此.py作为可安装软件包的一部分,则它可能最终位于用户无法编辑的系统目录中。对于这个项目,这可能不是问题,只需列出一些注意事项即可。

© www.soinside.com 2019 - 2024. All rights reserved.