Python не видит модуль
В папке с проектом есть папка с модулями и файл main.py.
В PyCharm, чтобы main.py видел эти модули, я в Settings->Project->Project Structure отметил папку с модулями как source code.
Однако, если запускать программу через cmd ( python main.py ) выводится ошибка, что модули не видны.
Подскажите, пожалуйста, как это можно исправить?
Код ниже не помогает.
sys.path.append(os.path.join(sys.path[0], r'папка-с-модулями')) os.environ['PATH'] += ','+r"папка-с-модулями"
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Pycharm видит все модули даже «мои» через modules, но дело в том, что при import. не видит мой модуль
но проблема в том, что при import. или from. pycharm не видит мой собственный модуль. Во всех.
Почему интерпретатор Python не видит модуль?
Начал изучать Python по учебнику Лутца. У меня python 3.6.5, макось Создал модуль person, при.
Зависает модуль tkinter при использовании модуль Time || python
По приколу решил создать клик тест на питоне. При этом использовал два модуля tkinter для красоты и.
Поставил 3-й модуль памяти, комп видит только один модуль
Проблема такая, в материнке было 2 модуля Самсунг DDR3 по 2гб каждый(2 синих слота), решил.
Автоматизируй это!
7054 / 4559 / 1207
Регистрация: 30.03.2015
Сообщений: 13,132
Записей в блоге: 29

Сообщение было отмечено HitGirl как решение
Решение
HitGirl, а поему ты girl но при этом
Сообщение от HitGirl 
?
нужно было просто создать пакет питон и все тогда нормально.
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение от HitGirl 
Однако, если запускать программу через cmd (python main.py) выводится ошибка, что модули не видны.
Ну а какое отношение cmd имеет к PyCharm? Откуда ему знать, что ты там отметил(а) в своей IDE?
Пора приступить к изучению что такое директория, текущая рабочая директория и т.д.
И потом, структура проекта у тебя какая? Как ты делаешь import модулей? Что такое абсолютный и относительный импорт в курсе?
Регистрация: 08.10.2015
Сообщений: 386
Пакет помог.
Но пришлось переписывать import во всех модулях.
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Чтобы твои модули были видны для импорта глобально (как стандартные в lib и lib\site-packages), можно просто в корне каталога Python создать файл python.pth и написать в нем:
твой_путь\название_твоего_каталога
Регистрация: 08.10.2015
Сообщений: 386
Сообщение от Garry Galler 
твой_путь\название_твоего_каталога
То есть в папке Python37-32 (где лежит python.exe) я просто создаю текстовый файл python.pth. Пишу туда: C:\Users\Projects\папка_с_модулями и вместо from папка_с_модулями import модуль1 , я могу использовать обычный import ( import модуль1 )?
Я так сделал, но у меня не сработало. Может я что-то упустил.
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение от HitGirl 
Я так сделал, но у меня не сработало.
У всех работает.
папка_с_модулями реально на кириллице? Забудь про названия на русском.
P.S. И да, кстати, программисты говорят не папка, а каталог.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
не видит модуль WI-FI
проблема не стандартная дано: ровербук про550 AzureWave AW-GE780 (Atheros AR5BXB63) 802.11 b/g.
Модуль не видит CSS
Здравствуйте, недавно начал осваивать движок, нужно верстку натянуть на opencart, за основу взял.

Не видит модуль памяти
Купил позавчера два модуля памяти по 2 гб себе, установил все ок, купил еще одну через день такую.
PyCharm не видит модуль
Я подключаю в python, через .pth файл, модуль как .pyd. Через консоль и jupyter модуль импортится.

Не видит модуль requests
Не видит модуль requests. Версия Python 3.7.2 При компиляции кода выдает такое Traceback (most.
Не видит 1 модуль оперативы
Вечер добрый! Кто может подсказать в чем проблема. И так, стояла на ноутбуке 1 плата на 4 гб.
Почему python не видит модуль?
модули уже устанавливал, обновлял пакеты, PyCharm настойчиво доказывает мне что таких модулей у меня нет
в чем может быть проблема?
- Вопрос задан более года назад
- 597 просмотров
2 комментария
Простой 2 комментария

Сколько версий питона у вас установлено?
3f4g @3f4g Автор вопроса
Решения вопроса 0
Ответы на вопрос 1

Проекты в PyCharm могут использовать системный интерпретатор, или виртуальное окружение (отдельную копию интерпретатора для проекта). Соответственно модули, установленные в одном, другой не увидит.
Проверь, что используешь, и куда ставишь.
Ну и да, имена устанавливаемых пакетов и импортируемых модулей в студию. Может, у тебя просто опечатка в импорте.
Ответ написан более года назад
Нравится 2 3 комментария
3f4g @3f4g Автор вопроса

вот фото импортируемых модулей
где я могу посмотреть выбранный интерпретатор и список модулей которые он видит?

3f4g, открой окно терминала в pycharm и введи pip freeze, получишь список установленных пакетов.
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Python
Палиндромы leetcode, в VS все правильно, на сайте другой ответ, что делать?
- 1 подписчик
- 3 часа назад
- 59 просмотров
Python не видит модуль при импорте
Но возвращает «ModuleNotFoundError: No module named ‘ecg'». Что я упустил, что делаю не так, подскажите, пожалуйста?
Отслеживать
задан 16 окт 2018 в 9:44
11 1 1 золотой знак 1 1 серебряный знак 3 3 бронзовых знака
from ecg import ECG — так работает?
16 окт 2018 в 9:49
Путь надо добавить в переменную PYTHONPATH , а не PATH .
16 окт 2018 в 9:52
Так тоже не работает
16 окт 2018 в 12:08
Изначально нет. Нужно создать.
16 окт 2018 в 12:09
в какой папке лежит запускаемый скрипт?
16 окт 2018 в 12:10
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
В Python 3 существует несколько способов импорта: абсолютный и относительный.
При абсолютном импорте поиск модуля выполняется из путей из списка os.path
from module_name import class_name # обсолютный имопрт
При таком иморте поиск будет идти по этим путям:
import os.path print(os.path)
Если нужно испортировать модуль, который находится внутри текущего то нужно импортировать по отностиельному пути:
from .module_name import class_name
Запускаемые модули и пакеты — Python: Настройка окружения
Представим, что у нас есть файл с кодом, который мы запускаем как скрипт. Файл разрастается, в нем появляются функции и прочие определения. В какой-то момент мы понимаем, что хотим переиспользовать функцию из этого модуля в другом модуле. Значит, нужно импортировать. В этом уроке мы разберемся, как работает импорт скриптов.
Импортирование скриптов
Смоделируем описанную выше ситуацию. Так будет выглядеть исходный скрипт:
# file def greet(who): print(f'Hello, who>!') greet('Bob') greet('Ann')
Теперь посмотрим на новый скрипт, в котором мы хотим переиспользовать функцию greet из первого скрипта:
# file from first_script import greet greet('Thomas')
Запустим первый скрипт, а затем — второй. Оба файла расположены в текущей директории:
При выполнении второго скрипта выполнился и первый, хотя мы всего лишь импортировали из него одну функцию — такова цена за простоту написания скриптов.
Файл первого скрипта содержит определения и непосредственные действия, поэтому при загрузке файла при импорте модуля эти действия будут выполнены.
Теперь представьте, что мы бы импортировали скрипт, в котором не просто что-то печатается на экран, а удаляются какие-то файлы.
Выходит, нам нужно как-то различать ситуации двух типов:
- Модуль работает как скрипт — выполняем побочные действия
- Модуль или его содержимое импортируются — не выполняем побочные действия
Специальная переменная __name__
Рассмотрим механизм импорта при загрузке модуля в первый раз — а именно первый для текущего запуска интерпретатора.
Во время первой загрузки интерпретатор добавляет в модуль несколько переменных специального вида. Этих переменных довольно много, но нам пока интересна одна — переменная __name__ .
Кажется, что у переменной необычное имя — в нем целых четыре символа подчеркивания. На самом деле такие имена часто встречаются в Python-коде и как правило имеют какой-то специальный смысл. Опытный разработчик обычно помнит наизусть пару десятков таких переменных, поэтому про эти переменные любят спрашивать на собеседованиях.
Посмотрим, что хранит переменная __name__ в каждом конкретном случае:
- Если происходит обычный импорт, то эта переменная содержит полное имя модуля
- Если происходит запуск в качестве скрипта, то переменная получает специальное значение — строку ‘__main__’
Глядя на значение этой переменной, мы можем отличать запуск в качестве скрипта от импортирования.
Слово main используется во многих языках для именования функции, которая вызывается автоматически при старте программы. Потому и в Python это слово используется в похожем смысле.
Давайте вернемся к нашему примеру и перепишем first_script.py с применением этого нового знания:
# file def greet(who): print(f'Hello, who>!') if __name__ == '__main__': greet('Bob') greet('Ann')
Теперь наш скрипт не будет приветствовать Боба и Энн, если мы будем импортировать модуль.
Функция main
Наш скрипт first_script.py уже достаточно хорош, но можно немного его улучшить.
В теле условия if __name__… перечислен набор действий, которые выполняются при запуске скрипта. Со временем таких действий может стать достаточно много.
Нередко происходят ситуации, когда нужно переиспользовать этот кусок кода. Поэтому существует соглашение: в теле условия if __name__… делают всего один вызов функции без аргументов main , которую объявляют выше в этом же модуле. При этом само условие принято располагать в самом конце модуля скрипта.
С учетом всех описанных рекомендаций финальная версия скрипта first_script.py будет выглядеть так:
#!/usr/bin/env python3 def greet(who): print(f'Hello, who>!') def main(): greet('Bob') greet('Ann') if __name__ == '__main__': main()
Такой скрипт можно:
- Запускать непосредственно
- Запускать из других скриптов, вызывая функцию main
- Использовать как библиотеку
Запускаемые пакеты
Рассмотрим немного необычный, но все же встречающийся случай — запуск пакета.
Может показаться, что раз при загрузке пакета всегда загружается модуль __init__.py , то функцию main и условие нужно располагать в нем.
Но запуск пакетов реализован несколько иначе: при загрузке пакета интерпретатор ищет __main__.py и выполняет его как скрипт. Здесь мы не будем углубляться в причины — просто запомним, что исполняемые пакеты всегда содержат скрипт __main__.py .
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
