mam tej konfiguracji:imp.load_source inny plik niż .py, ale .py istnieją również w tym katalogu
Plik: a.ext1 a.py
a.ext1 ładuje a. py z jakiegoś powodu, ale jako silnik muszę załadować plik a.ext1.
Mogę sprawić, że działa dobrze w py3, ale nie mogę go uruchomić w py2.
Oto moja próba python2: ** To jest główny strumień, oczywiście jest więcej kodu wokół niego.
file = os.path.abspath(os.path.expanduser('a.ext1')
directory = os.path.dirname(file)
sys.path.append(directory)
fullname = 'my.name.space.a'
sys.modules['my.name.space'] = imp.new_module('my.name.space')
x = imp.load_source(fullname,file)
Teraz, jeśli to zrobię; x, powie mi:
module 'my.name.space' from '<path>/a.ext1'
, ale jeśli robię dir (x), to daje mi rzeczy z a.py. Chcę, żeby dała mi rzeczy z pliku a.ext1.
Jak mogę uzyskać to działa na py2?
Oto jak to działa na py3:
file = os.path.abspath(os.path.expanduser('a.ext1'))
directory = os.path.dirname(file)
sys.path.append(directory)
fullname = 'my.name.space.a'
loader = importlib.machinery.SourceFileLoader(fullname = fullname,
path = file)
x = loader.load_module()
Teraz x jest dokładnie to, co chcę, pliku a.ext1, a nie .py
Każdy pomysł w jaki sposób można uzyskać tej pracy dla py2?
(Btw czytałem wszystko udało mi się znaleźć na ten temat na przepełnienie stosu, ale to nie był przypadek, gdy .py istniał również)