I have a Python package that has some template files. I'm trying to access the path to them using pkg_resources
, but I can't figure out how:
antigravity.py
:
import pkg_resources
def my_function():
print(pkg_resources.resource_listdir('antigravity', 'extras'))
print(pkg_resources.resource_filename('antigravity', 'foo.dat'))
print(pkg_resources.resource_filename('antigravity.extras', 'bar.dat'))
return True
if __name__ == '__main__':
my_function()
The output is:
python antigravity\antigravity.py
['bar.dat', 'test.txt']
C:\git\swt_root\new_project\antigravity\foo.dat
Traceback (most recent call last):
File "antigravity\antigravity.py", line 22, in <module>
my_function()
File "antigravity\antigravity.py", line 16, in my_function
print(pkg_resources.resource_filename('antigravity.extras', 'bar.dat'))
File "C:\Users\my_user\Anaconda3\lib\site-packages\pkg_resources\__init__.py", line 1128, in resource_filename
return get_provider(package_or_requirement).get_resource_filename(
File "C:\Users\my_user\Anaconda3\lib\site-packages\pkg_resources\__init__.py", line 345, in get_provider
__import__(moduleOrReq)
ModuleNotFoundError: No module named 'antigravity.extras'; 'antigravity' is not a package
I'm not trying to read bar.dat
, I'm actually trying to replace the following code:
import pathlib
script_folder = pathlib.Path(__file__).parents[0]
bar = script_folder.joinpath('extras', 'bar.dat')
I've installed the package with pip install -e .
. I'm using Anaconda on Windows 10.
My package structure is:
new_project
| MANIFEST.in
| setup.py
|
\---antigravity
| antigravity.py
| foo.dat
| __init__.py
|
\---extras
bar.dat
__init__.py
MANIFEST.in
:
include antigravity/foo.dat
include antigravity/extras/bar.dat
setup.py
:
import setuptools
setuptools.setup(
name="antigravity",
version="0.0.1",
packages=setuptools.find_packages(),
include_package_data=True,
test_suite="test",
python_requires=">=3.6",
)
__init__.py
:
from .antigravity import my_function
foo.dat:
foo
bar.dat:
bar