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


однако, в точно такой же проект, в другом каталоге (тот же уровень, что и util) позвонил data, у меня есть файл data/data_prep.py, которая также импортирует функции из util/util.py использование аналогичного оператора импорта...и он работает без каких-либо проблем.


очевидно, я делаю это как домашнее задание, поэтому у меня нет такого опыта...но я сделал эту точную конфигурацию для последних 3 homeworks и столкнулся с нулевыми проблемами, поэтому я понятия не имею, как даже устранить эту проблему,особенно когда другой файл работает.


проблема исчезает, когда я перемещаю файл в другой каталог. Поэтому я думаю, что этот вопрос как импортировать файл python, расположенный в том же каталоге в проекте pycharm? потому что pycharm вызывает ошибку, если я делаю import util и предлагает мне использовать полное имя из корня.

4 ответов


если у вас нет __init__.py создайте один и добавьте эту строку

from util.util import my_function

затем вы можете легко импортировать модуль в ваших скриптах the __init__.py говорит python, что он должен рассматривать эту папку как пакет python, его также можно использовать для импорта/загрузки модулей.

в большинстве случаев __init__.py пусто.

со ссылкой на документы

The __init__.py файлы необходимы, чтобы заставить Python лечить каталоги, содержащие пакеты; это делается для предотвращения каталоги с общим именем, например string, из непреднамеренно скрытие допустимых модулей, которые возникают позже в пути поиска модуля. В самый простой случай, __init__.py может быть просто пустой файл, но это может быть также выполните код инициализации для пакета или установите __all__ переменная, описанная позже.


Рекомендуется:

убедитесь, что рабочая папка установлена как Sources.

вы можете сделать это Pycharm -> Preferences -> Project: XYZ -> Project Structure

выберите рабочую папку и отметьте ее как Sources. Затем Pycharm распознает рабочую папку как исходную папку для проекта, и вы сможете просто добавить другие файлы в эту папку, используя

import filename.py

или

from filename.py import mudule1

=================

не рекомендуется:

на Pycharmвы можете просто добавить . до .py файл, который вы собираетесь импортировать из папку. В вашем случае это будет

from .util import my_functions

Примечание: может быть немного не связаны.

я столкнулся с той же проблемой, но я не смог импортировать модуль в тот же каталог (а не подкаталог, как просил OP) при запуске ноутбук jupyter (здесь в каталоге не было __init__.py). Как ни странно, я установил путь python и местоположение интерпретатора и все такое. Ни один из других ответов не помог, но изменение каталога в python сделало.

import os
os.chdir(/path/to/your/directory/)

Я использую PyCharm 2017.3 on Ubuntu 16.04


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')),
]