以简单的方式安装和访问数据文件(conf、json、sqlite3,…)。

datafolder的Python项目详细描述


Built Status

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一起工作)。对于虚拟环境 数据文件夹将放在环境的根目录下。

怎么做?

  1. 首先,安装datafolder包:

    $ pip install -U datafolder
    
  2. 然后,键入:

    $ datafolder
    

    它将生成一个名为bootdf.py的文件,您必须放在mypkg目录中,并且 名为setup_TPL.py的新文件必须放在项目的根目录中。

  3. 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)
  1. 现在,rename将文件重命名为setup.py
  2. 编写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!
  1. 只要转到项目的根目录并在终端类型中:

    $ datafolder mypkg
    
  2. 现在,您将看到MANIFEST.insetup.py是为您填写的,并且 bootdf.py已经在mypkg文件夹中。您只需完成setup.py根据需要(字段authoremailurl和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!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用McClickListener单击了什么元素   Java时间戳在Oracle时间戳中不同情况下存储12 PM的奇怪行为   java无法使用事件总线对运行在不同机器上的垂直体进行通信   java Mockserver:收到请求后进行回调   java无法将Json字符串转换为Map<string,Object>   java如何按升序排列输出?   java视图行,带有oracle键。jbo。在SrCategoryParentIterator中找不到键[300100120394155]   javafxmysql连接示例   java正在等待加载完成   java是否可以将同一个有状态会话bean实例注入多个其他会话bean?   java无法让万向节检测离开或进入区域   使用JavaCV和OpenCV的java提供了dyld:lazy符号绑定失败:找不到符号:__sincos_stret   xml解析无法使用Java读取xml文档   java无法更改工具栏的颜色   javaapachesshd和JSCH   java无法在firebase存储中检索图像url   java问题与executeUpdate   同一应用程序中不同活动之间的java SharedReference