首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从模块源复制模板文件

从模块源复制模板文件
EN

Stack Overflow用户
提问于 2013-09-21 00:23:24
回答 2查看 350关注 0票数 1

我正在编写一个应用程序,它将作为python模块部署。我的问题是,要使用它,需要在您使用应用程序的文件夹中包含一个非常复杂的配置文件。我正在编写一个例程,检查文件是否存在于当前文件夹中,但我在复制默认配置文件时遇到了问题。

因此,基本上,我希望能够复制位于

代码语言:javascript
复制
/usr/lib/python2-7/dist-packages/myapp/default.ini

到当前文件夹。如何在win、osx和nix系统上访问此文件的路径?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-21 00:59:30

假设您使用的是setuptools (或distribute…)但是如果是这样的话,您应该更新到setuptools),文档解释了这一点。(确保阅读以下两部分。)

首先,正常的setuptools安装会将您的文件放在/usr/local/share等下面的某个地方,而不是在包中。

您可以覆盖这一点,但是如果您这样做了,这意味着它们可能会在一个myapp.egg文件中结束,或者一个网站-Packages.zip,甚至内置到一个.exe中。在任何一种情况下,您都无法通过路径访问它们。

解决所有这些问题的简单方法是使用pkg_resources。然后,您的代码不需要知道任何关于鸡蛋或the文件的信息,您只需按名称打开资源即可。

当然,这意味着您不能只使用shutil.copy(datapath, './default.ini');您必须执行with open('./default.ini', 'w') as f: f.write(datacontents)。但这是唯一真正增加的复杂性。

票数 1
EN

Stack Overflow用户

发布于 2013-09-21 00:42:44

在Python模块中,__file__变量保存到该模块文件的完整路径。因此,在myapp.something模块(例如,.../myapp/something.py)中,您可以编写:

代码语言:javascript
复制
import os
os.path.abspath(os.path.join(__file__, '..', 'default.ini'))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18927654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档