Skip to content

An example project demonstrating how to access data files in Python package

Notifications You must be signed in to change notification settings

wimglenn/resources-example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This project shows how to package data files within a Python distribution, and has some example code for reading the data files. To build this distribution, create a venv with build installed and then execute

python -m build

The distributions (an sdist .tar.gz and a bdist .whl) will be written to ./dist/ subdirectory. To test it out, install the distribution and run the console script resources-example.

Here's a compatibility summary of the five approaches demonstrated:

Module Description In stdlib? Works on Py2? Works on Py3? Works in zipfile? Run as script?*
example1.py os.path.join yes yes yes no yes
example2.py pkgutil yes yes yes yes no
example3.py pkg_resources no yes yes yes yes
example4.py importlib.resources deprecated no yes (3.7+) yes yes
example5.py importlib_resources yes (3.9+) yes yes yes yes

* "Run as script" means executing the submodule directly, e.g. python myapp/example2.py. Note that Guido considers this an anti-pattern

If you are interested in creating an executable zip from source, you can use stdlib zipapp utility (Python 3.5+):

python3 -m zipapp --compress /path/to/resources-example --main="myapp:main" --output=myapp.zip

And now you can run the zip directly with the interpreter (any Python version):

python myapp.zip

About

An example project demonstrating how to access data files in Python package

Resources

Stars

Watchers

Forks

Packages

 
 
 

Languages