@@ -108,6 +108,51 @@ An alternative build directory can be specified using the
108108:option: `build-dir ` config setting.
109109
110110
111+ Data files
112+ ---------- 
113+ 
114+ It is relatively common to install data files needed at runtime
115+ alongside the package's Python code or extension modules. For a Python
116+ package named ``package `` this would look like this:
117+ 
118+ ..  TODO update the text block below to 'meson' when
119+ ..  meson lexer is updated to fix
120+ ..  https://github.com/pygments/pygments/issues/2918
121+ 
122+  .. literalinclude :: ../../tests/packages/install-data/meson.build 
123+    :lines:  5-
124+ 
125+ In most circumstances, these files can be accessed deriving their
126+ filesystem path from the filesystem path of the Python module next to
127+ them via the ``__file__ `` special variable. For example, within the
128+ package ``__init__.py ``:
129+ 
130+ .. code-block :: python 
131+ 
132+    import  pathlib 
133+ 
134+    data =  pathlib.Path(__file__ ).parent.joinpath(' data.txt'  ).read_text() 
135+    uuid =  pathlib.Path(__file__ ).parent.joinpath(' uuid.txt'  ).read_text()  #  WRONG! 
136+ 
137+  However, this does not work when modules are not loaded from a package
138+ installed in the Python library path in the filesystem but with a
139+ special module loader, as used to implement editable installs in
140+ ``meson-python ``. In the example above, the second read would fail
141+ when the package is installed in editable mode.  For this reason, data
142+ files need to be accessed using :mod: `importlib.resources `. The code
143+ above should be replaced with:
144+ 
145+ .. literalinclude :: ../../tests/packages/install-data/__init__.py 
146+    :lines:  5-
147+ 
148+ :mod: `importlib.resources ` implements a virtual filesystem that allows
149+ to access individual files as if they were in their install location.
150+ However, there is no way to expose this file structure outside of the
151+ python runtime. In the example above, it is not possible to make the
152+ ``data.txt `` and ``uuid.txt `` files appear in the same fileystem
153+ directory.
154+ 
155+ 
111156.. _how-to-guides-editable-installs-verbose :
112157
113158Verbose mode
0 commit comments