Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

python. import in vs2022

303  
  max2_2000 местный житель25.05.22 21:46
25.05.22 21:46 

подозреваю, ето только в визуал студио случается.

имеем "мейн" модуль, в нижележащей директории - package 'pkg'

в нем - два модуля: mdl0, mdl1

в mdl0 определен класс Cl0, в котором используется класс Cl1, определенній в mdl1.


в main модуле записано

from pkg import mdl0

и без проблем

c0 = Cl0()

в mdl0:

если пишем

from mdl1 import Cl1 as c

, при вьіполнении говорит, что не находит модуля mdl1

хорошо. меняем на

from pkg.mdl1 import Cl1 as c

вьіделяет подчерком pkg.mdl1, при всплівает hover pkg.mdl1 could not be resolved

но запускается в дибаггере. все бежит красиво до такой строчки

c1 = c()

exception 'local variable 'c' referenced before assignment


tupl'u



#1 
NightWatch коренной житель26.05.22 10:43
NightWatch
NEW 26.05.22 10:43 
в ответ max2_2000 25.05.22 21:46
в mdl0:
если пишем
from mdl1 import Cl1 as c
, при вьіполнении говорит, что не находит модуля mdl1

from .mdl1 import Cl1 as c

https://docs.python.org/3/reference/import.html#package-re...

#2 
  max2_2000 местный житель29.05.22 16:42
NEW 29.05.22 16:42 
в ответ NightWatch 26.05.22 10:43

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

ошибка моя біла тупой до простоті.

у меня реально, конечно, не mdl, cl и т.д., а какие-то другие, более осмісленніе имена, и много чего другого внутри, я просто здесь описал схему. после как віложил здесь, собрал єту схему, и она спокойно сработала, без никаких ошибок.

ошибка біла: там, где "много чего внутри" меня угораздило переменную обозвать тем же именем, что дал импортируемому классу "для локального пользования". 'c' в моей схеме. т.е. получилось


from mdl1 import Cl1 as c

...

с = blablabla

...

cc = c(...)


конечно, нужно біть внимательнее, но сообщение об ошибке могло бі біть поконкретнее.

#3