Как импортировать файл python, расположенный в том же подкаталоге в проекте pycharm
У меня ошибка ввода в pycharm при отладке и запуске.
Структура моего проекта укоренена правильно и etc./HW3/.
так что HW3
является корневым каталогом.
У меня есть подпапка в HW3, util
и файл, util/util.py
У меня есть еще один файл в util
называется run_tests.py
.
В run_tests.py
меня есть следующая структура импорта,
from util.util import my_functions, etc.
Это приводит к ошибке ввода from util.util import load_dataset,proportionate_sample ImportError: No module named 'util.util'; 'util' is not a package
from util.util import load_dataset,proportionate_sample ImportError: No module named 'util.util'; 'util' is not a package
Однако в том же проекте, в другом каталоге (того же уровня, что и util
), называемом data
, у меня есть файл data/data_prep.py
, который также импортирует функции из util/util.py
с помощью аналогичного оператора import... и он работает без проблем.
Очевидно, я делаю это в ходе выполнения домашней работы, поэтому, пожалуйста, поймите: это является дополнительным к объему домашней работы.
Проблема исчезает, когда я перемещаю файл в другой каталог. Итак, я думаю, что этот вопрос: Как мне импортировать файл Python, расположенный в том же каталоге в проекте Pycharm? Потому что pycharm выдает ошибку, если я просто использую import util
и предлагает использовать полное имя из корня.
Ответы
Ответ 1
Если у вас нет __init__.py
создать его и добавить эту строку
from util.util import my_function
то вы можете легко импортировать модуль в свои скрипты
__init__.py
сообщает python, что он должен рассматривать эту папку как пакет python, ее также можно использовать для импорта/загрузки модулей.
в большинстве случаев __init__.py
пуст.
Цитирование документов
Файлы __init__.py необходимы, чтобы Python рассматривал каталоги как содержащие пакеты; это делается для предотвращения каталоги с общим именем, например строка, непреднамеренно скрывая действующие модули, которые появляются позже на пути поиска модуля. В простейший случай, __init__.py может быть просто пустым файлом, но он может также выполнить код инициализации для пакета или установить __all__ переменная, описанная ниже.
Ответ 2
Рекомендуемый способ:
Обязательно установите рабочую папку в качестве Sources
.
Вы можете сделать это в Pycharm
->
Preferences
->
Project: XYZ
->
Project Structure
Выберите вашу рабочую папку и отметьте ее как Sources
. Затем Pycharm распознает рабочую папку как исходную папку для проекта, и вы сможете просто добавить другие файлы в эту папку, используя
import filename.py
или же
from filename.py import mudule1
=================
Не рекомендуемый способ:
В Pycharm
вы можете просто добавить .
перед .py
файлом, который вы собираетесь импортировать из той же папки. В вашем случае это будет
from .util import my_functions
Ответ 3
Примечание: может быть немного не связано.
Я столкнулся с той же проблемой, но мне не удалось импортировать модуль в том же каталоге (а не в подкаталог, как было задано OP) при запуске ноутбука Jupyter (здесь в каталоге не было __init__.py). Странно, у меня был установлен путь к Python, местоположение интерпретатора и все. Ни один из других ответов не помог, но смена каталога в python сделала.
import os
os.chdir(/path/to/your/directory/)
Я использую PyCharm 2017.3
на Ubuntu 16.04
Ответ 4
У меня была та же проблема с pycharm, но на самом деле ошибка заключалась в том, что файл, который я пытался импортировать, не имел расширения .py, хотя я мог запустить его как отдельный скрипт. Загляните в окно проводника и убедитесь, что оно имеет расширение .py. Если нет, щелкните правой кнопкой мыши файл в окне проводника, выберите рефакторинг, а затем переименуйте его с расширением .py.
Ответ 5
Настройки → Проект → Структура проекта
Вы хотите добавить папку к источникам. Ниже для Pycharm 2019 приведен пример добавления папки тестов к источникам. Выберите папку, затем нажмите на синий значок источников (см. Ссылку на видео ниже).
![enter image description here]()
Ссылка на видео
Ответ 6
Щелкните правой кнопкой мыши папку, которую вы хотите пометить как источник> Отметить каталог как> Корень источника.
Ответ 7
ModuleNotFoundError: нет модуля с именем appTwo
from django.conf.urls import url,include
from django.contrib import admin
from appTwo import views
urlpatterns = [
url(r'^$',views.index,name='index'),
url(r'^admin/', admin.site.urls),
url(r'^users/',include('appTwo.urls')),
]