импорт на Python не работает должным образом - PullRequest
0 голосов
/ 16 января 2019

Хотя переменная должна быть импортирована, я получаю исключение «имя X не определено».

main.py

from config import *
from utils import *
say_hello()

utils.py

from config import *
def say_hello():
    print(config_var)

config.py

from utils import *
config_var = "Hello"

Попытка запустить "main.py":

Traceback (последний вызов был последним): Файл "main.py", строка 3, в скажи привет() Файл "C: \ Users \ utils.py", строка 3, в say_hello печать (config_var) NameError: имя 'config_var' не определено

Что здесь произошло? Почему some_var не доступен из utils.py?

Ответы [ 3 ]

0 голосов
/ 16 января 2019

Вы также должны импортировать config.config_var, так как эта переменная принадлежит этому конкретному модулю

0 голосов
/ 16 января 2019

Вы создаете для многих операторов импорта, возможно, попробуйте следующее ниже, но вам также нужно определить параметр в utils.py, если вы передаете параметр через него.

В utils.py мы требуем, чтобы параметр был передан, поскольку вы хотите распечатать соответствующее значение, в config.py вы определяете значение. Тогда в main.py, как обсуждалось до использования подстановочного оператора "*", не совсем хорошо в этой ситуации, тогда для вызова соответствующих функций вам необходимо обратиться к ним через имя их файла

В utils.py:

def say_hello(config_var):
    print(config_var)

В config.py

config_var = "Hello"

Тогда в main.py

import config as cn
import utils as ut
ut.say_hello(cn.config_var)

В этой теме также рассказывается, как писать модули Python Как писать модуль / пакет Python?

0 голосов
/ 16 января 2019

Вы импортируете config в util и util в config, что вызовет эту ошибку (создайте перекрестный цикл). удалите from utils import * из config.py и попробуйте это.

И в main.py вам не нужно импортировать from config import *, если вы не используете переменные из config непосредственно в main ()

...