查找模块的目录
如何找到模块导入的目录,因为它需要加载同一目录中的数据文件。
编辑:
结合几个答案:
module_path = os.path.dirname(imp.find_module(self.__module__)[1])
得到了我想要的
How can I find what directory a module has been imported from, as it needs to load a data file which is in the same directory.
edit:
combining several answers:
module_path = os.path.dirname(imp.find_module(self.__module__)[1])
got me what i wanted
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您想通过将
module_name
指定为字符串即不实际导入模块来进入模块目录,则使用输出:
foo.py
bar.py
输出:
If you want to modules directory by specifying
module_name
as string i.e. without actually importing the module then useoutput:
foo.py
bar.py
output:
这可行:
如果你想找到导入对象的模块:
This would work:
and if you want to find the module an object was imported from:
模块文件的路径位于
module.__file__
中。您可以将其与 os.path.dirname 一起使用来获取目录。The path to the module's file is in
module.__file__
. You can use that withos.path.dirname
to get the directory.以 re 模块为例:
请注意,如果该模块位于当前工作目录(“CWD”)中,您将仅获得一个相对路径,例如
foo.py
。我养成了立即获取绝对路径的习惯,以防 CWD 在使用模块路径之前发生更改。Using the re module as an example:
Note that if the module is in your current working directory ("CWD"), you will get just a relative path e.g.
foo.py
. I make it a habit of getting the absolute path immediately just in case the CWD gets changed before the module path gets used.