Функция импорта из скрипта в подпапке - PullRequest
0 голосов
/ 03 июня 2019

Я знаю, что подобные вопросы задавались много , много , много , много раз.

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

У меня есть следующая структура:

+ C:\etc.\etc.\maindir   <---Root Directory
|     mymainfile.py
|     __init__.py        <---this is empty
+     \AuxFun            <--- Subfolder
|         __init__.py    <---this contains: "from . import *"
|         myauxfun1.py
|         myauxfun3.py

Теперь внутри моего основного (mymainfile.py) у меня есть:

from AuxFun.myauxfun1 import AuxFun1
import AuxFun.myauxfun3 as AuxFun3

каждая myauxfun состоит из одной функции:

def fun()
...
return output

Сценарий отлично работает на ноутбуке jupyter 5.6.0 с Python 3.7 (и IPython 6.5)

Однако он не работает на Spyder 3.3.1 с Python 3.7 .

, и при попытке импорта консоль возвращает:

ModuleNotFoundError: No module named 'AuxFun'

Я изначально пытался без файла __init__.py и с абсолютно пустым __init__.py во вложенной папке.

Я также пробовал следующее:

from AuxiliaryFunctions import *
from .AuxFun.myauxfun1 import AuxFun1
import KR.AuxFun.myauxfun2 as AuxFun2

, которые возвращают соответственно:

ModuleNotFoundError: No module named 'AuxiliaryFunctions'
ModuleNotFoundError: No module named '__main__.AuxiliaryFunctions'; '__main__' is not a package
ModuleNotFoundError: No module named 'KR'

Интересно (для меня) автозаполнение распознает папку и файлы.
т.е. если я наберу: ". ⇥ Tab ", появится подпапка AuxFun.
Аналогично, набрав ".AuxFun. ⇥ Tab ", отобразятся все сценарии auxfun в подпапке.

...