mcdominik
mcdominik

Reputation: 514

my own python package - problem with path to model

I published python package on pypi.org structure looks like this:

/my_package_name-0.0.1
-- README LICENSE ETC..
-- /my_package_name
   -- __init__.py
   -- train_model.py
   -- predict.py
   -- /saved_models
      -- november_model

In predict.py I have function that loads model:

def my_function():
    (some code...)
    net.load_model('./saved_models/november_model')

When I'm trying to use the package:

from my_package.predict import my_function

my_function()

I get error that it can't see the model:

OSError: Unable to open file 
(unable to open file: name = './saved_models/november_model',
errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)

I tried also:

net.load_model('saved_models/november_model')
net.load_model('./saved_models/november_model')
net.load_model('../saved_models/november_model')

I can't figure out correct path

Upvotes: 1

Views: 646

Answers (1)

mcdominik
mcdominik

Reputation: 514

The solution was to use importlib.resources in predict.py:

try:
    import importlib.resources as pkg_resources
except ImportError:
    # Try backported to PY<37 `importlib_resources`.
    import importlib_resources as pkg_resources
from my_package import saved_models

and instead of:

net.load_model('saved_models/november_model')

I used:

f = pkg_resources.open_text(saved_models, 'november_model')
net.load_model(f.name)

Upvotes: 1

Related Questions