Python Forum
Including data files in a package
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Including data files in a package
#1
I want to create a binary package (Wheel) and possibly also a source package (tarball). I need to include a reference file and a help file. I believe I can do this for the source package just by stating them in MANIIFEST.in, but all the information I have found on the Web states that for a binary package I need to use setup.py.
This Python tutorial states
Static metadata (setup.cfg) should be preferred. Dynamic metadata (setup.py) should be used only as an escape hatch when absolutely necessary. setup.py used to be required, but can be omitted with newer versions of setuptools and pip.
I would prefer to follow the official recommendation, is there a way to include my files with a statement in setup.cfg perhaps?
Reply
#2
(Oct-24-2021, 07:33 PM)ChrisOfBristol Wrote: but all the information I have found on the Web states that for a binary package I need to use setup.py.
To do most setup from setup.cfg is relative new,so most tutorial/demo you find on web will be for setup.py.
Can still use setup.py it will work fine or can rewrite it to use setup.cfg
Look at Configuring setup() using setup.cfg files
A sample Python project

And look my answer in your last post.
in setup.cfg to add files eg .dat use [options.data_files](same as package_data).

In link you see for setup.py is this way.
# If there are data files included in your packages that need to be
# installed, specify them here.
package_data={  # Optional
        'sample': ['package_data.dat'],
    },
Reply
#3
(Oct-24-2021, 09:11 PM)snippsat Wrote: Look at Configuring setup() using setup.cfg files
The above states the following without any explanation of what the elements are:
[options.data_files]
/etc/my_package =
site.d/00_default.conf
host.d/00_default.conf
data = data/img/logo.png, data/svg/icon.svg
fonts = data/fonts/*.ttf, data/fonts/*.otf

I've no idea what site.d... or host.d... mean. I imagine that the line starting data means create a directory called "data" and copy the following files into it. I'll try:
[options.data_files]
data = reference.dat, help.html
Reply
#4
Can just use [options.package_data] this will add .dat and .rst files,work for me when i test
[options.package_data]
* = *.dat, *.rst
So same setup as this,but added somefile.dat
And importlib.resources sa shown here
packaging_tutorial/
└── src/
    └── example_package/
        ├── __init__.py
        └── example.py
        └── somefile.dat
# Build
(pack_tut) G:\div_code\pack_tut\packaging_tutorial
λ python -m build
* Creating venv isolated environment..
..... ect
Successfully installed example-pkg-YOUR-USERNAME-HERE-0.0.1

# install
(pack_tut) G:\div_code\pack_tut\packaging_tutorial\dist
λ pip install example_pkg_YOUR_USERNAME_HERE-0.0.1-py3-none-any.whl --force-reinstall
.....
Successfully installed example-pkg-YOUR-USERNAME-HERE-0.0.1

# Test that it work
(pack_tut) G:\div_code\pack_tut\packaging_tutorial
λ python
Python 3.9.5 (tags/v3.9.5:0a7dcbd, May  3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from example_package import example
>>>
>>> example.add_one(2)
3
# Can now use somefile.dat here
>>> example.add_one(int(example.number))
43
Gribouillis likes this post
Reply
#5
The documentation on this is very confusing and the statements conflict in certain circumstances. A bug report/enhancement request has been made.

This works:

[options]
package_dir =
= src
packages = find:
python_requires = >=3.7
include_package_data = True

[options.packages.find]
where = src


With this in MANIFEST.in:

include src/mymodules/myapp.dat src/mymodules/myapp.html src/mymodules/myapp.hlp

The package has now been published.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Is it possible to extract 1 or 2 bits of data from MS project files? cubangt 8 940 Feb-16-2024, 12:02 AM
Last Post: deanhystad
  Function to count words in a list up to and including Sam Oldman45 15 6,407 Sep-08-2023, 01:10 PM
Last Post: Pedroski55
  script to calculate data in csv-files ledgreve 0 1,055 May-19-2023, 07:24 AM
Last Post: ledgreve
  python move specific files from source to destination including duplicates mg24 3 1,050 Jan-21-2023, 04:21 AM
Last Post: deanhystad
  SQL Alchemy help to extract sql data into csv files mg24 1 1,678 Sep-30-2022, 04:43 PM
Last Post: Larz60+
  Apply textual data cleaning to several CSV files ErcoleL99 0 808 Jul-09-2022, 03:01 PM
Last Post: ErcoleL99
  PyPI package and files ChrisOfBristol 4 2,054 Oct-23-2021, 09:17 PM
Last Post: snippsat
  Not including a constructor __init__ in the class definition... bytecrunch 3 11,520 Sep-02-2021, 04:40 AM
Last Post: deanhystad
  Plotting sum of data files using simple code Laplace12 3 2,992 Jun-16-2021, 02:06 PM
Last Post: BashBedlam
  how to create pythonic codes including for loop and if statement? aupres 1 1,887 Jan-02-2021, 06:10 AM
Last Post: Gribouillis

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020