Неразрешенный импорт 'util'

Обширный поиск в Google, Reddit и на этом сайте не дал результатов, поэтому, надеюсь, кто-то здесь может мне помочь. Код

import util

выдает ошибку unresolved import 'util'. util.py — это модуль в той же папке. Для справки, вот моя иерархия:

\Projects
    |-\adventure
        |-\src
            |-__init__.py
            |-main.py
            |-util.py

и это моя информация VSCode:

Version: 1.32.2 (user setup)
Commit: e64cb27b1a0cbbc3f643c9fc6c7d93d6c6509951
Date: 2019-03-13T02:00:46.035Z
Electron: 3.1.6
Chrome: 66.0.3359.181
Node.js: 10.2.0
V8: 6.6.346.32
OS: Windows_NT x64 10.0.17134

Любая помощь будет принята с благодарностью.

from adventure import util?
roganjosh 14.03.2019 23:15
from adventure.src import util? :)
Adam Smith 14.03.2019 23:16
import .util Скорее всего.
Adam Smith 14.03.2019 23:17

К сожалению, все они получают ошибку unresolved import.

DCoded 14.03.2019 23:20

«неразрешенный импорт» не является ошибкой Python. Что выдает эту ошибку?

Adam Smith 14.03.2019 23:22

в каком файле находится import util?

Sergey Ronin 14.03.2019 23:22

@AdamSmith Я использую pep8 для анализа, так что либо это, либо VSCode. Однако мои деньги были бы на первом.

DCoded 14.03.2019 23:28

@КомронАрипов main.py

DCoded 14.03.2019 23:29

попробуйте запустить его как модуль: python3 -m main или, если вы находитесь внутри папки «adventure», как python3 -m src.main

Sergey Ronin 14.03.2019 23:30

@KomronAripov К сожалению, это не решило проблему.

DCoded 14.03.2019 23:44
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
10
1 151
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я считаю, что происходит то, что VSCode запускает main.py из текущего рабочего каталога, который не является /Projects или каким-либо из его подкаталогов. Поэтому, когда вы пытаетесь import util или from adventure import util, он не может найти файл. Быстрое и простое решение — добавить путь к /src к sys.path:

import sys
sys.path.append('/Projects/adventure/src')
import util

или что там может быть от абсолютный путь до /src. Немного чище может быть добавление вашего каталога /Projects, а затем импорт из приключения, чтобы вам не приходилось добавлять дополнительные каталоги, если вы хотите включить модули из других пакетов в папку «Проекты».

import sys
sys.path.append('/Projects') # whatever the absolute path to /Projects is
from adventure import util

Другая возможность включает обновление файла конфигурации VSCode, чтобы указать измененную переменную среды PYTHONPATH, чтобы указать путь для импорта проекта. Вы можете включить следующее в launch.json под своей конфигурацией:

"env": {
    "PYTHONPATH": "/path/to/src/:${PYTHONPATH}"
}

или создайте файл .env, чтобы указать то же самое:

PYTHONPATH=/path/to/src/:${PYTHONPATH}

Они были получены из документы визуальной студии. Обратите внимание, что вам, возможно, придется изменить : на ; и / на \\ в Windows.

Это не сработало, к сожалению. Может ли это быть как-то связано с местоположением python.exe? Я установил его в свою папку /Documents, а папка /Projects находится внутри той же папки, что и все установочные файлы (/Python).

DCoded 14.03.2019 23:42

@DCoded, на самом деле этого не должно быть. У меня есть еще одна идея, я обновлю свой пост.

Dillon Davis 14.03.2019 23:49

@DCoded, просто чтобы быть уверенным, вы написали свой абсолютный путь, используя \\ instead of / с первой попытки, верно? Поскольку вы находитесь в Windows, ваши разделители пути - это двойная обратная косая черта.

Dillon Davis 14.03.2019 23:59

@DCoded, не могли бы вы попробовать запустить код в командной строке без использования VSCode, просто чтобы немного сузить его? Откройте cmd, перейдите к своему main.py, запустите Path/To/Python/python.exe main.py и посмотрите, выдает ли он ту же ошибку?

Dillon Davis 15.03.2019 00:19

Создание файла .env с указанным PYTHONPATH, кажется, сработало, хотя я не включил :${PYTHONPATH} в конце. Спасибо.

DCoded 15.03.2019 00:21

Другие вопросы по теме