Как исправить имя не определено в Python - PullRequest
0 голосов
/ 05 июля 2019

Я работаю над проектом на Python:

project
  Test.py
  COMMON.py
  SYSTEM.py
  PTEST1
    Hello.py

при запуске кода "Test.py" будет отображаться NameError, я не уверен почему?

Но если я заменил «из системного импорта *» на «из общего импорта *» в Test.py и PTEST1 / Hello.py, это работает, как и ожидалось.

#Test.py is like this:

from SYSTEM import *
myvalue.Hello.printf()

# COMMON.py is like this:

myvalue = lambda: None
from PTEST1.Hello import Hello
myvalue.Hello = Hello

# SYSTEM.py is like this:

from COMMON import *
#PTEST1/Hello.py
from SYSTEM import *

class Hello():   
    @staticmethod
    def printf():
        print("Hello1")
        print(vars(myvalue))

Я ожидаю, что "NameError" не будет изменен при импорте кода. Кстати, мой питон 3,6 +

1 Ответ

0 голосов
/ 05 июля 2019

Хорошей практикой является указание имен файлов в нижнем регистре.

Похоже, вы создаете проект Python под project/.Любой каталог должен иметь файл __init__.py в каждом каталоге, чтобы его можно было обнаружить в Python.

Затем вам нужно ссылаться на модули по их полному имени (не относительному именованию).

Итак, структура каталогов должна быть:

project/
  __init__.py
  test.py
  common.py
  system.py
  ptest1/
    __init__.py
    hello.py

Каждый раз, когда вы обращаетесь к файлу, вы должны указать полный путь.

# import everything from hello.py
from project.ptest1.hello import *

# import everything from common.py
from project.common import *

# import everything from system.py
from project.system import *
...