以简单的方式安装和访问数据文件(conf、json、sqlite3,…)。
datafolder的Python项目详细描述
datafolder是一个小型的python库,它使安装变得非常容易 包的数据文件和access稍后访问它们。
如果你想安装一些数据文件(conf,sqlite,csv,…)到 用户的主目录,发现使用setuptools很困难,然后在这里 是有帮助的。
WARNING this is beta software!
首先,让我们让生活更简单,并使用一些“按惯例配置”。
我假设(1)您的项目布局如下:
MANIFEST.in README.rst setup.py mypkg │ ├── __init__.py ├── mypkg.conf ├── mypkg.db └── ...
你想把一个文件夹放在用户的主目录中 (在Windows中为%appdata%),数据文件(conf,csv,…)在其中。 此文件夹将具有您的包的名称(在Unix中以“.”开头) 系统),比如“.mypkg”,当然,还有正确的权限 (它将与sudo pip install mypkg一起工作)。对于虚拟环境 数据文件夹将放在环境的根目录下。
怎么做?
首先,安装datafolder包:
$ pip install -U datafolder
然后,键入:
$ datafolder
它将生成一个名为bootdf.py的文件,您必须放在mypkg目录中,并且 名为setup_TPL.py的新文件必须放在项目的根目录中。
setup_TPL.py是一个模板,您必须适应您的情况:
importsysimportpkg_resourcesfromsetuptoolsimportsetupfrommypkg.bootdfimportInstaller# <-- ADAPT THIS# write the name of the package (in this case 'mypkg'!)MYPKG='mypkg'# <-- ADAPT THIS# list of data files in mypkg (just the names)# [don't forget to include these files in MANIFEST.in!]MYDATAFILES=['mypkg.conf','mypkg.db']# <-- ADAPT THIS# tell setup were these files are in your package# (I assume that they are together with the first __init__.py)MYRESOURCES=[pkg_resources.resource_filename(MYPKG,datafile)fordatafileinMYDATAFILES]# now, create the installerinstaller=Installer(sys.argv)# create the data folder and tell setup to put the data files thereDATAPATH=installer.data_path(MYPKG)data_files=[(DATAPATH,MYRESOURCES)]# now, setup can do his thing...setup(name=MYPKG,packages=[MYPKG,'other_packg1','other_packg2'],# <-- ADAPT THISdata_files=data_files,...# <-- ADAPT THIS)# but we are NOT READY, in some cases the data files# don't have the appropriate permissions,# let us fix that...installer.pos_setup(MYDATAFILES)
- 现在,rename将文件重命名为setup.py。
- 编写manifest.in文件(缺少此步骤是许多问题的原因!)。应该是这样的:
include *.txt
include *.md
include *.rst
include mypkg/*.conf
include mypkg/*.rst
include mypkg/*.db
仅此而已!
But with version 0.2.1 it is even better!
只要转到项目的根目录并在终端类型中:
$ datafolder mypkg
现在,您将看到MANIFEST.in和setup.py是为您填写的,并且 bootdf.py已经在mypkg文件夹中。您只需完成setup.py根据需要(字段author、email、url和trove分类器…。
“但是,我有相反的问题,我如何在代码中访问这些文件?“。” 我听到你说。
非常简单,在您的代码中(对于与bootdf.py位于同一文件夹中的文件):
from.bootdfimportDataFolderdata=DataFolder('mypkg')# now you can get the full path of each data file, e.g.conf_fp=data.files['mypkg.conf']# do your thing... (read, write, ...)
为了方便起见,DataFolder类发现位置 提供属性和方法, 这样可以方便地处理数据文件夹中显示的文件。
Feedback请!
REMARK: as you can see above, this only works if the install method uses ^{tt10}$. Is not the case of python wheels however!