我正在编写一个应用程序,它将作为python模块部署。我的问题是,要使用它,需要在您使用应用程序的文件夹中包含一个非常复杂的配置文件。我正在编写一个例程,检查文件是否存在于当前文件夹中,但我在复制默认配置文件时遇到了问题。
因此,基本上,我希望能够复制位于
/usr/lib/python2-7/dist-packages/myapp/default.ini到当前文件夹。如何在win、osx和nix系统上访问此文件的路径?
谢谢
发布于 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)。但这是唯一真正增加的复杂性。
发布于 2013-09-21 00:42:44
在Python模块中,__file__变量保存到该模块文件的完整路径。因此,在myapp.something模块(例如,.../myapp/something.py)中,您可以编写:
import os
os.path.abspath(os.path.join(__file__, '..', 'default.ini'))https://stackoverflow.com/questions/18927654
复制相似问题