henon / Python.Included

A Python.NET based framework enabling .NET libraries to call into Python packages without depending on a local Python installation.
MIT License
313 stars 51 forks source link

Module name is not always the moduledir. #29

Open ijsankar opened 3 years ago

ijsankar commented 3 years ago

Eg "allennlp-models" directory name is allennlp_models

henon commented 3 years ago

Please describe the problem in detail. Also, are you proposing a solution?

ijsankar commented 3 years ago

If I have a module named scikit-learn installed. when I call IsModuleInstalled() it should return true. The function assumes that the module is in a folder named scikit-learn in site-packages folder. But the actual folder name is scikit_learn. Thus the function always returns false.

henon commented 3 years ago

I see. But how do we solve that problem?

JimiC commented 2 years ago

@henon The only way to resolve this is by looking into the site-packages folder and do a lookup to determine if scikit-learn or scikit_learn is present. Same issue happens with py-linq (https://pypi.org/project/py-linq/).

Alternatively the scikit_learn module name could be used but from my testing, in both cases (scikit-learn and scikit_learn), the corresponding folder is not present in the site-packages folder.

henon commented 2 years ago

So all we gotta do is check for either snake_case or kebab-case?

JimiC commented 2 years ago

So all we gotta do is check for either snake_case or kebab-case?

That seems to be the case with python library naming.

Maybe using a Regex would be more useful.

JimiC commented 2 years ago

Looking at it again I think that's something that pythonnet should resolve, right?