Извините, на этот вопрос уже был получен ответ, но я не могу найти ответ на свою проблему ... Я хочу сделать два отдельных сценария вызываемыми. Позвольте мне подробно объяснить на примере.
У меня есть структура каталогов, подобная этой:
maindir
|- subdir
| |- script.py
| `- myfunc.py
`- main.py
со следующим содержанием:
В myfunc.py
есть
def myverynicefunc():
print('Hello, I am your very nice func :)')
в script.py
есть
import myfunc
def scriptfunc():
print('I am the script function :)')
myfunc.myverynicefunc()
и в main.py
есть
from subdir.script import scriptfunc
scriptfunc()
Если я захожу в каталог subdir
и выполняю скрипт, он работает, я имею в виду:
.../main_dir/subdir$ python3 script.py
Hello, I am your very nice func :)
Однако, если я пытаюсь выполнить сценарий main.py
, он завершается неудачно:
.../main_dir$ python3 main.py
Traceback (most recent call last):
File "main.py", line 1, in <module>
from subdir.script import scriptfunc
File "/home/alf/Escritorio/main_dir/subdir/script.py", line 1, in <module>
import myfunc
ModuleNotFoundError: No module named 'myfunc'
Если я изменю содержание script.py
на
from . import myfunc
def scriptfunc():
print('I am the script function :)')
myfunc.myverynicefunc()
теперь ситуация обратная, скрипт main.py
работает нормально:
.../main_dir$ python3 main.py
Hello, I am your very nice func :)
I am the script function :)
, но сценарий script.py
завершается ошибкой:
.../main_dir/subdir$ python3 script.py
Traceback (most recent call last):
File "script.py", line 1, in <module>
from . import myfunc
ImportError: cannot import name 'myfunc'
Есть ли способ сделать оба звонка на main.py
и script.py
на работу?