Почему я не могу импортировать функцию из другого файла в текущем каталоге? - PullRequest
0 голосов
/ 30 октября 2019

Я не могу импортировать функции из другого файла py. Как я могу импортировать функцию из другого файла в том же каталоге? Два файла py находятся в одном каталоге. Версия Python 3.7. ОС - Windows 10. Пожалуйста, помогите, большое спасибо.

db.py

from parser import parser   # No name 'parser' in module 'parser'

def _db():
    '''
        Function: Get sql from GUI, and pass it to paser
    '''
    print('__Start DBMS__')
    # TODO

    print('__End DBMS__')

    pass


if __name__ == "__main__":
    _db()
    parser()

parser.py

def parser(_sql=None):
    '''
        Funtion: Get sql string, and parse it and call cressponding functions
    '''
    print('__Start Parsing__')

    # TODO

    print('__End Parsing__')
    pass

Traceback (последний вызов был последним):

Файл "db.py", строка 1, в

from parser import parser

ImportError: невозможно импортировать имя 'parser' из 'parser' (неизвестное местоположение)

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

, поскольку в python есть встроенное moudle с именем parser, ваш moudle конфликтует с ним, у решения есть два: 1. изменить имя вашего модуля. 2. используйте абсолютный путь, но сначала вы должны добавить каталог вашего проекта в PATH, если вы используете PyCharm, это может помочь вам сделать это по умолчанию.

если ваш проект имеет такую ​​структуру,

...other directory...
  --top_layer
    --second_layer
    --parser.py

Вы можете импортировать вот так

from top_layer.parser import parser

извините, мой английский плохой!

0 голосов
/ 30 октября 2019

Измените имя файла parser.py на другое, например parser1.py, и

from parser1 import parser

должно работать как положено.

Поскольку компилятор считает, что вы обращаетесь к питону parser библиотека

...