Ошибка SourceFileLoader для относительного импорта - PullRequest
0 голосов
/ 26 мая 2019

SourceFileLoader из importlib не работает, особенно если есть относительный импорт (не абсолютный). Как мне указать родительский модуль, чтобы этого не произошло. Например,

>>> from importlib.machinery import SourceFileLoader                                                                                                                                                    
>>> SourceFileLoader('t_sne', 'venv/lib/python3.5/site-packages/sklearn/manifold/t_sne.py').load_module()                                                                                               

---------------------------------------------------------------------------
SystemError                               Traceback (most recent call last)
<ipython-input-3-553b4ae077de> in <module>
----> 1 SourceFileLoader('t_sne', 'venv/lib/python3.5/site-packages/sklearn/manifold/t_sne.py').load_module()

/usr/lib/python3.5/importlib/_bootstrap_external.py in _check_name_wrapper(self, name, *args, **kwargs)

/usr/lib/python3.5/importlib/_bootstrap_external.py in load_module(self, fullname)

/usr/lib/python3.5/importlib/_bootstrap_external.py in load_module(self, fullname)

/usr/lib/python3.5/importlib/_bootstrap.py in _load_module_shim(self, fullname)

/usr/lib/python3.5/importlib/_bootstrap.py in _load(spec)

/usr/lib/python3.5/importlib/_bootstrap.py in _load_unlocked(spec)

/usr/lib/python3.5/importlib/_bootstrap_external.py in exec_module(self, module)

/usr/lib/python3.5/importlib/_bootstrap.py in _call_with_frames_removed(f, *args, **kwds)

~/PycharmProjects/codemap/venv/lib/python3.5/site-packages/sklearn/manifold/t_sne.py in <module>
     17 from scipy.spatial.distance import squareform
     18 from scipy.sparse import csr_matrix
---> 19 from ..neighbors import NearestNeighbors
     20 from ..base import BaseEstimator
     21 from ..utils import check_array

SystemError: Parent module '' not loaded, cannot perform relative import

Во-первых, у меня есть другие причины для загрузки модулей таким образом, поэтому решение должно позволить мне загрузить модуль из пути к файлу и иметь дело с относительным импортом в файле.

...