Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 596

Неудобство

23.05.2020, 14:59. Показов 2711. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
- Здравствуйте всем!

Я не совсем уверен, что это вопрос по PyCharm. Может и по языку Python.

Суть вопроса:
- Я создал дополнительный модуль - Python_My_Glob и вынес в него класс - Glob.
Там же создаю единственный экземпляр этого класса - glob.

- В основной модуль - Python_My я импортирую экземпляр (glob) выражением:
Python
1
from Python_My_Glob import glob  # .....  (1)
- Все импортируется и работает отлично.
Но в импортирующем выражении (1) PyCharm подсвечивает все идентификаторы (Python_My_Glob и glob) - КРАСНЫМ !
Оно бы все ничего, работает да и ладно. Но как-то раздражает.

- Пожалуйста объясните, что НЕ ТАК ? Заранее благодарен !
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.05.2020, 14:59
Ответы с готовыми решениями:

Неудобство с кодингом
Добрый вечер, такая вот проблема: при написании кода очень часто приходиться работать стрелками, мышью. И при слепой печати оч не удобно...

Неудобство в Телеграме
Открываешь вот список подписчиков какого либо чата в телеге, пишешь ему что либо, затем возвращаешься назад-а список подписчиков опять с...

Неудобство с системным звуком
Привет знатокам. Маленькая проблемка, было 2 колонки, поставил еще 2 все настроил, звук работает нормально, но весь системный звук идет...

15
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
23.05.2020, 15:04
Staut, создал ли ты пакет(ы)? Что именно пишет пичарм принаведении на эти красные подсветки? Почему модуль называется не по питоновски? зачем назвал что-то glob ведь есть питоновская либа такая?
1
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 596
23.05.2020, 17:26  [ТС]
- Спасибо Welemir1 за участие!

- Я только-только начинаю пользоваться Питоном. А здесь столько вопросов.
- Что такое Пакет я - не знаю.
- При наведении курсора пишет - "Unresolved reference 'Python_My_Glob'".
- Как называть Модули по Питоновски?

- Если можно Welemir1 самый короткий примерчик. Буду ОЧЕНЬ БЛАГОДАРЕН!
Это урок на всю дальнейшую работу.

Добавлено через 1 час 41 минуту
- Спасибо, теперь знаю - КУДА КОПАТЬ ...
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
23.05.2020, 18:23
Цитата Сообщение от Staut Посмотреть сообщение
Как называть Модули по Питоновски?
как написано вот тут если кратко то python_my_glob
Цитата Сообщение от Staut Посмотреть сообщение
Что такое Пакет я - не знаю.
посмотри, там коротко и остальные там же глянь https://youtu.be/DZCbkU8UMtA

Совет: не называй свои библиотеки, переменные, классы как уже имеющиеся либы или встроенные функции, самому меньше будет мороки потом и странных ошибок. То есть list, dict, json, csv, max - плохие названия для собственных объектов
1
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 596
24.05.2020, 21:10  [ТС]
- Еще раз спасибо Welemir1. Теперь хоть что-то начинаю понимать.
Переделал свой проект, как это разъяснено в Вашем ролике. Правда проблему это НЕ РЕШИЛО.

Потом, вообще, полностью повторил все, что делалось в ролике (создал "правильный" Проект). И в этом "правильном" Проекте
попытался из одного Модуля вызвать Функцию другого Модуля. Все равно в выражениях импорта идентификаторы
подчеркиваются красным. А при наведении на них курсора выводится сообщение - "Unresolved reference '.....'".
Видимо причина глубже ...
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
25.05.2020, 13:13
Staut, пример тогда надо-я посмотрю. Архивом или видео сними на ютуб как ты делаешь.
0
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 596
25.05.2020, 14:55  [ТС]
- Welemir1, вот Проект, который я как будто ПОВТОРИЛ с Вашего ролика.
Я добавил туда только свой Модуль - main.py И из него вызвал простейшую Функцию,
которую написал в имевшемся в Проекте Модуле - str_formatting.py.
Вложения
Тип файла: rar packages.rar (3.4 Кб, 2 просмотров)
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
25.05.2020, 15:06
Лучший ответ Сообщение было отмечено Staut как решение

Решение

Staut, вот теперь увидел. Пакеты то мы для чего создаем? чтобы писать импорты или абсолютные или релатив (как пути в ОС)
напиши вот так
Python
1
from .str_formatting import aaaaa  # .....
и тут ты должен себе задать вопрос - а что за точка? что она значит?
а потом ты можешь поправить
Python
1
from str_works.str_formatting import aaaaa  # .....
... и задать себе второй вопрос - почему так тоже работает? Не почитать ли мне у Лутца главу по импортам?

и приняв твою конструктивную критику я запишу видео по импортам! Спасибо
1
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
25.05.2020, 15:11
Welemir1, Поддержу ответ сие господина. Хотел накидать пример, но если ты не прочтешь литературу, особо и не поймешь в чем дело. Если в кратце: если ты пишешь модуль, то все импорты внутри совершаются относительно расположения данного файла, одна точка это означает что файл находится в этой же директории данного файла, две точки - в родительской. Ты не сможешь запустить их на прямую, будет ругаться на относительный импорт, а вот если импортировать вне пакета то все будет отлично работать. Отсюда нужно сделать вывод, что твой скрипт main.py не может находится внутри пакета этого модуля.
1
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 596
25.05.2020, 15:14  [ТС]
- Огромное СПАСИБО Welemir1! Все работает КАК НАДО!
Теперь буду далее читать и ДУМАТЬ.

- Еще раз СПАСИБО!
1
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
25.05.2020, 15:14
-Module
---->__init__.py
---->str_formatter.py
-main.py

Python
1
2
3
4
5
6
7
8
9
# -*- file: main.py -*-
 
from Module.str_formatter import aaaaa
 
 
aaaaa(0)  # вызов Функции из другого Модуля.
aaaaa(1)  # вызов Функции из другого Модуля.
aaaaa(2)  # вызов Функции из другого Модуля.
aaaaa(3)  # вызов Функции из другого Модуля.
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
25.05.2020, 16:49
Цитата Сообщение от Staut Посмотреть сообщение
попытался из одного Модуля вызвать Функцию другого Модуля
Что бы исключить ошибки связанные с конфликтами имен (когда они возникают) лучше не использовать синтаксис
Python
1
from ... import <имена переменных>
, а пользоваться при импорте синтаксисом
Python
1
import <имя модуля>
или, если имя модуля громоздкое, то так
Python
1
import <имя модуля> as <сокращенное имя>
Тогда имена переменных из импортируемого модуля будут выглядеть так <имя модуля>.<имя переменной>, что делает эти имена уникальными, которые не будут конфликтовать с именами основного модуля. Такие имена, в которых указано имя модуля, из которого они берутся, называются квалифицированными именами. Множество квалифицированных имен, которые принадлежат только одному модулю, и не могут пересекаться с переменными из других модулей, называется пакетом переменных.
Кстати переменные, принадлежащие одному классу или одному экземпляру класса, так же являются квалифицированными именами. Здесь так же можно говорить о пакете переменных для конкретного экземпляра класса. Поэтому используя ООП, Вы также можете исключить конфликт имен внутри одного модуля.
Если Вы в импортируемом модуле используете тот же класс, что и в основном и экземпляр класса с тем же именем, то конфликт все равно будет, если Вы используете импортирование From ... . Гарантировать отсутствие конфликта и в этом случае может только импорт с синтаксисом import ...
Тогда имя переменной будет выглядеть так <имя модуля>.<имя экземпляра класса>.<имя атрибута> .

Добавлено через 1 час 0 минут
Но в любом случае, нельзя называть переменные используя ключевые слова питона.

Добавлено через 7 минут
И еще, если только Вы не пишете какой то большой проект, где Вам просто необходимо разносить программу по нескольким директориям, то помещайте все модули одной программы в одном каталоге. Если Вы начинающий, то будет меньше мороки.
Другое дело, если Вы как раз изучаете импорт модулей из разных каталогов.
В этом случае, я могу только посоветовать размещайте все каталоги , где находятся импортируемые модули ниже основного каталога, в котором находится запускающий сценарий. То есть каталоги с модулями должны быть подкаталогами каталога с основной (запускаемой) программой.
1
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 596
26.05.2020, 09:29  [ТС]
- Спасибо ребята DmFat, Viktorrus! Появилось много вариантов.
Буду пробовать разные. Искать наиболее удобный для себя.

- Немного запутался ... Не дадите ли примерное определение, что такое - Модуль и что такое - Пакет?
И для чего они в ОСНОВНОМ используются?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
26.05.2020, 10:00
Цитата Сообщение от Staut Посмотреть сообщение
Немного запутался ... Не дадите ли примерное определение, что такое - Модуль и что такое - Пакет?
И для чего они в ОСНОВНОМ используются?
модуль это файл с кодом на питоне
пакет это папка с модулями
используется это все для иерархии и порядка, чтобы не валить все в кучу, сам представь если у тебя будет 25 модулей просто лежать. И совсем другое дело когда есть пакет net, пакет string и т.п. в которых есть модули которые работают с указанными сущностями.
Вот https://youtu.be/D8WSSiTbLl0
1
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 596
26.05.2020, 10:17  [ТС]
- Еще раз спасибо Welemir1. Я примерно так и представлял. Просто кое-какие мысли меня сбили ...
Буду больше и по-всякому пользоваться и все встанет на свои места.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
26.05.2020, 20:18
Staut, Как во многих случаях одно и то же слово, в зависимости от контекста, может иметь разный смысл. То, о чем говоритWelemir1, Это один смысл слова "пакет", а точнее "пакет программ".
Но внутри питона существует другой смысл слова "пакет", а точнее "пакет переменных".
О первом варианте смысла слова "пакет" Лутц говорит
Лутц М. Изучаем Python (4-е издание, 2011) стр.641:
Кликните здесь для просмотра всего текста
"Помимо возможности импортировать имя модуля существует возможность импортировать имена каталогов. Каталог на языке Python называется пакетом, поэтому такая операция импортирования называется импортированием пакетов. В действительности, операция импортирования пакета превращает имя каталога в еще одну разновидность пространства имен, в котором атрибутам соответствуют подкаталоги и файлы модулей, находящиеся в этих каталогах. Это немного усложненная особенность, но иерархическая структура, которую она создает, оказывается удобной для организации файлов в крупных системах и в большинстве случаев упрощает настройку пути поиска модулей. Как мы увидим дальше, операция импортирования пакетов иногда оказывается просто необходимой, чтобы избежать неоднозначности при наличии нескольких файлов программ с одинаковыми именами, установленных на одном компьютере. В этой главе мы также рассмотрим недавно появившийся в языке Python механизм импортирования относительно пакета и его синтаксис, так как оно имеет отношение только к программному коду в пакетах. Как мы увидим далее, этот механизм изменяет путь поиска и расширяет инструкцию from, позволяя с ее помощью выполнять импортирование имен из пакетов."
А вот что говорит Лутц в отношении понятия "пакет переменных", которое является синонимом понятия "пространство имен", которое имеет отношение к одному модулю а не к "пакету модулей".
Лутц М. Изучаем Python (4-е издание, 2011) стр.97,99:
Кликните здесь для просмотра всего текста
"Модуль – это, главным образом, всего лишь пакет имен переменных, известный как пространство имен. Имена внутри этого пакета называются атрибутами, то есть атрибут – это имя переменной, которая связана с определенным объектом (таким как модуль). "
"Вообще программы на языке Python состоят из множества файлов модулей, связанных между собой инструкциями import. Каждый файл модуля – это самостоятельный пакет переменных, или пространство имен. Один модуль не сможет увидеть переменные, определенные в другом модуле, если явно не импортирует его. Модули позволяют уменьшить вероятность конфликтов имен в программном коде – так как каждый файл является самостоятельным пространством имен, имена в одном файле не вступают в конфликт с именами в другом файле, даже если они одинаковые."

Поэтому нужно понимать, что Welemir1, говорил Вам об одном "пакете", а я о другом, и они имеют разный смысл и разное назначение в питоне.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.05.2020, 20:18
Помогаю со студенческими работами здесь

Неудобство в drag'n'drop
в сортировке sortable блоки которые тащишь очень большие, нужно сделать так чтобы тащился только элемент указанный в свойстве handle. и в...

Неудобство интерфейса Windows 10
Во первых при загрузке винды сразу грузится последний пользователь, и, если он без пароля, то загрузиться в другого пользователя не...

Sublime 3 - неудобство с автоподстановкой
Пишу код в Sublime 3 на языке, в котором перед численной переменной должен стоять знак $. Выясняется, что из-за этого $ в начале -...

Неудобство при открытии флеш открыва
При открытии флешки открывается окно в котором находится ярлык. при просмотре свойств ярлык ссылается на объект: ...

Большое количество библиотек для приложения создают неудобство для распространения программы
Вообщем у меня около 10 .DLL библиотек таскается с моей программой...Как сделать чтобы не таскать их стоко??


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru