这个问题在这里已经有答案了:
如何从Python包中读取(静态)文件?
(7个答案)
(7个答案)
去年关闭了
我正在编写一个python包,其中包含需要打开/data/子目录中的数据文件的模块。现在,我已经将文件的路径硬编码到我的类和函数中。我希望编写更健壮的代码,无论子目录安装在用户系统的何处,都可以访问该子目录
我试过各种方法,但到目前为止我运气不好。似乎大多数“currentdirectory”命令都返回系统python解释器的目录,而不是模块的目录
这似乎应该是一个微不足道的常见问题。但我似乎不明白。部分问题是我的数据文件不是.py文件,因此我不能使用导入函数等
有什么建议吗
现在,我的包目录如下所示:
/
__初始值
模块1.py
模块2.py
数据/
data.txt
我正试图从module*.py访问data.txt
标准方法是使用setuptools包和pkg_资源
您可以根据以下层次结构布局包,并根据此链接配置包设置文件以将其指向您的数据资源:
http://docs.python.org/distutils/setupscript.html#installing-包数据
然后,您可以使用pkg_资源重新查找并使用这些文件,如下链接所示:
http://peak.telecommunity.com/DevCenter/PkgResources#basic-资源访问
导入软件包资源
DATA_PATH=pkg_resources.resource_文件名(“<;package name>;”,“DATA/”)
DB_FILE=pkg_resources.resource_文件名(“<;package name>;”,“data/sqlite.DB”)