【发布时间】:2016-01-15 01:47:43
【问题描述】:
我知道以下方法可以确定模块正在执行的目录:
os.path.dirname(os.path.abspath(__file__))
现在假设我有一个包含一些模块的包,这些模块需要读取位于子目录中的文本文件。像这样的:
|-- package
| |-- __init__.py
| |-- module1.py
| |-- subdirectory1
| | |-- module2.py
| |-- subdirectory2
| | |-- file.txt
假设我不想使用文件的相对路径。我的直觉是,最好在包根目录中的某处定义一个全局变量,该变量提供包的绝对路径(例如上面的代码行),并且可以在需要引用文件时由不同的模块导入包内。但是这个变量会去哪里呢?在它自己的模块中?还是让每个模块获取自己的绝对路径,从中获取包根目录,然后附加到文件的位置更好?
编辑:另一个想法是将其存储在os.environ 中并让模块从那里获取它。也许将以下行放在顶层__init__.py:
os.environ['MY_PACKAGE_ROOT'] = os.path.dirname(os.path.abspath(__file__))
【问题讨论】:
标签: python organization project-organization