Как импортировать файл 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')),
]