繁体   English   中英

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

[英]imported python module from another directory fails

我已经使用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 加载模块时,它会将元数据添加到模块可以使用的全局命名空间。 __file__是 its.py 文件的文件名 - 当这样的名称有意义时。 您可以使用它来获取您的配置文件

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

除非你不能。 如果这是一个 C 扩展文件,或者该文件位于 zip 或 egg 或 pyinstaller 包或 exe 等其他包装中,则可能无法正常工作。 我假设用户可编辑的 ini 文件可能需要位于模块目录以外的某个位置。 如果您将 this.py 作为可安装 package 的一部分,它可能最终位于用户无法编辑的系统目录中。 这对这个项目来说可能不是问题,只是列出一些考虑因素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM