Не могу импортировать мои собственные модули в python

Пример работы с пакетами

PIP позволяет устанавливать, обновлять и удалять пакеты на компьютере. Ниже попробуем разобраться с работой менеджера pip на примере парсинга названий свежих статей на сайте habr.com.

  • установим нужные пакеты;
  • импортируем пакет в свой скрипте;
  • разберемся, что такое ;
  • обновим/удалим установленные пакеты.

Приступим

Шаг #1 Установка.

Для начала, нам необходимо установить beautifulsoup4 — библиотеку для парсинга информации с веб-сайтов.

pip найдет последнюю версию пакета в официальном репозитории pypi.org. После скачает его со всеми необходимыми зависимостями и установит в вашу систему. Если вам нужно установить определенную версию пакета, укажите её вручную:

Данная команда способна даже перезаписать текущую версию на ту, что вы укажите.

Также для работы beautifulsoup нам понадобится пакет lxml

️ Важный момент: по умолчанию pip устанавливает пакеты глобально. Это может привести к конфликтам между версиями пакетов. На практике, чтобы изолировать пакеты текущего проекта, создают виртуальное окружение (virtualenv).

Шаг #2 Импортирование в скрипте.

Для того чтобы воспользоваться функционалом установленного пакета, подключим его в наш скрипт, и напишем простой парсер:

Шаг #3 requirements.txt.

Если вы просматривали какие-либо проекты Python на Github или где-либо еще, вы, вероятно, заметили файл под названием requirements.txt. Этот файл используется для указания того, какие пакеты необходимы для запуска проекта (в нашем случае beautifulsoup4 и lxml).

Файл создается командой:

и выглядит следующим образом:

Теперь ваш скрипт вместе с файлом requirements.txt можно сохранить в системе контроля версий (например git).

Для работы парсера в новом месте (например на компьютере другого разработчика или на удаленном сервере) необходимо затянуть файлы из системы контроля версий и выполнить команду:

Шаг #4Обновление/удаление установленных пакетов.

Команда выведет список всех устаревших пакетов. Обновить отдельно выбранный пакет поможет команда:

Однако бывают ситуации, когда нужно обновить сразу все пакеты из requirements.txt. Достаточно выполнить команду:

Для удаления пакета выполните:

Для удаления всех пакетов из requirements.txt:

Мы разобрали основы по работе с PIP. Как правило, этого достаточно для работы с большей частью проектов.

# События мыши

  • — самая левая кнопка;

  • — средняя кнопка (где доступно);

  • — самая правая кнопка.

  • — прокрутка вверх колесика мыши в Linux;

  • — прокрутка вниз колесика мыши в Linux;

    , и являются синонимами.

  • – движение курсора мыши.

  • — мышь перемещается с нажатой кнопкой B1 (используйте B2 для средней кнопки, B3 для правой кнопки).

  • — кнопка была отпущена. Это, вероятно, лучший выбор в большинстве случаев, чем событие , потому что если пользователь случайно нажимает кнопку, они могут отодвинуть мышь от виджета, чтобы избежать отключения события.

  • — кнопка-1 была дважды нажата. Вы можете использовать Double или Triple как префиксы.

  • — Указатель мыши вошел в виджет (это событие не означает что пользователь нажал клавишу Enter!).

  • — Указатель мыши покинул виджет.

Загрузка модуля в код Python

Нам нужно загрузить модуль в код Python, чтобы использовать его функции. Python предоставляет два типа операторов:

  1. Оператор импорта
  2. Оператор from-import

Оператор импорта

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

Мы можем импортировать несколько модулей с помощью одного оператора импорта, но модуль загружается один раз, независимо от того, сколько раз он был импортирован в наш файл.

Синтаксис для использования оператора импорта приведен ниже.

import module1,module2,........ module n

Следовательно, если нам нужно вызвать функцию displayMsg(), определенную в файле file.py, мы должны импортировать этот файл как модуль в наш модуль, как показано в примере ниже.

Пример:

import file;
name = input("Enter the name?")
file.displayMsg(name)

Выход:

Enter the name?John
Hi John

Оператор from-import

Вместо того, чтобы импортировать весь модуль, в python имеется возможность импортировать только определенные атрибутов модуля. Это можно сделать с помощью from-import оператора. Синтаксис для использования оператора from-import приведен ниже.

from <module-name> import <name 1>, <name 2>..,<name n>   

Рассмотрим следующий модуль, называемый calculation, который содержит три функции: суммирование, умножение и деление.

calculation.py:

#place the code in the calculation.py 
def summation(a,b):
 return a+b
def multiplication(a,b):
 return a*b;
def divide(a,b):
 return a/b;

Main.py:

from calculation import summation  
#it will import only the summation() from calculation.py
a = int(input("Enter the first number"))
b = int(input("Enter the second number"))
print("Sum = ",summation(a,b)) #we do not need to specify the module name while accessing summation()

Выход:

Enter the first number10
Enter the second number20
Sum =  30

Оператор from … import всегда лучше использовать, если мы заранее знаем атрибуты, которые нужно импортировать из модуля. Это не позволяет нашему коду быть тяжелее. Мы также можем импортировать все атрибуты из модуля, используя *.

Рассмотрим следующий синтаксис.

from <module> import *  

Просмотр окружений

  1. Выберите команду меню Просмотр > Другие окна > Окружения Python. Откроется окно Окружения Python (как узел обозревателя решений), в котором представлены разные среды, доступные вам. Список содержит как среды, установленные с помощью установщика Visual Studio, так и среды, которые вы установили отдельно. В их число входят глобальные, виртуальные среды и среды Conda. Среда, выделенная полужирным шрифтом, — это среда, используемая по умолчанию для новых проектов. Дополнительные сведения о работе со средами см. в разделе Создание окружений Python и управление ими в средах Visual Studio.

    Observação

    Можно также открыть окно «Окружения Python», выбрав окно Обозревателя решений и нажав сочетание клавиш CTRL+K, CTRL+` . Если сочетание клавиш не работает и окно «Окружения Python» отсутствует в меню, возможно, не установлена рабочая нагрузка Python. Инструкции по установке Python см. в статье Установка поддержки Python в Visual Studio.

  2. На вкладке Обзор среды можно быстро получить доступ к интерактивному окну этой среды, а также к ее папке установки и интерпретаторам. Например, щелкните ссылку Открыть интерактивное окно, и в Visual Studio откроется интерактивное окно для этой среды.

  3. Теперь создайте проект, выбрав пункт меню Файл > Создать > Проект, а затем выбрав шаблон Приложение Python. В появившийся файл кода вставьте приведенный ниже код, который строит косинусоиду, как в предыдущих шагах учебника, но теперь в виде графика. Кроме того, можно использовать ранее созданный проект и заменить код.

  4. В открытом проекте Python можно открыть окно «Окружения Python» из Обозревателя решений, щелкнув правой кнопкой мыши Окружения Python и выбрав Просмотреть все окружения Python.

  5. Если в окне редактора вы наведете указатель мыши на операторы импорта и , вы заметите, что они не разрешены. Это связано с тем, что пакеты не были установлены в глобальную среду по умолчанию.

Применение easy_install

После установки setuptools, вы можете использовать easy_install. Вы можете найти его в папке с установочными скриптами Python. Не забудьте добавить папку со скриптами в путь вашей системы, чтобы вы в дальнейшем смогли вызывать easy_install в командной строке, без указания его полного пути. Попробуйте выполнить запустить следующую команду, чтобы узнать больше об опциях easy_install:

Python

easy_install -h

1 easy_install -h

Если вам нужно начать установку пакета при помощи easy_install, вам нужно сделать следующее:

Python

easy_install package_name

1 easy_install package_name

easy_install попытается скачать пакет с PyPI, скомпилировать его (если нужно) и установить его. Если вы зайдете в свою директорию site-packages, вы найдете файл под названием easy-install.pth, который содержит доступ ко всем пакетам, установленным через easy_install. Python использует этот файл, чтобы помочь в импорте модуля или пакета. Вы также можете указать easy_install на установку через URL или через путь на вашем компьютере. easy_install также может выполнить установку прямиком из файла tar. Вы можете использовать easy_install для обновления пакета, воспользовавшись функцией upgrade (или–U). И наконец, вы можете использовать easy_install для установки файла egg файлов. Вы можете найти эти файлы в PyPI, или в других источниках. Файлы egg – это особые zip файлы. На самом деле, если вы измените расширение на .zip, вы можете разархивировать файл egg.

Вот несколько примеров:

Python

easy_install -U SQLAlchemy
easy_install http://example.com/path/to/MyPackage-1.2.3.tgz
easy_install /path/to/downloaded/package

1
2
3
easy_install -U SQLAlchemy
easy_install http://example.com/path/to/MyPackage-1.2.3.tgz
easy_install /path/to/downloaded/package

Существует несколько проблем с easy_install. Он может попробовать установить пакет, пока он еще загружается. При помощи easy_install нельзя деинсталлировать пакет. Вам придется удалить пакет вручную и обновить файл easy-install.pth, удалив доступ к пакету. По этой, и многим другим причинам, в сообществе Python создали pip.

Python обнаруживает нажатие клавиш | Python обнаруживает ввод с клавиатуры самый простой способ!

Я делаю программу типа секундомера на python, и я хотел бы знать, как определить, нажата ли клавиша (например, p для паузы и s для остановки), и я не хотел бы, чтобы это было что-то вроде raw_input, которое ждет ввод пользователя перед продолжением выполнения. Кто-нибудь знает, как это сделать в цикле while?

Кроме того, я хотел бы сделать этот кроссплатформенный, но если это невозможно, то моя основная цель разработки — Linux.

для OS X stackoverflow.com/a/47197390/5638869 работает в Python 2 и 3

Python имеет клавиатура модуль с множеством функций. Установите его, возможно, с помощью этой команды:

Затем используйте его в коде, например:

  • 3 Я не уверен в использовании Linux, но у меня он работает в Windows.
  • 89 по-видимому, требуется root в Linux: /
  • Я пробовал это решение, но когда я пытаюсь импортировать модуль после его установки, я получаю сообщение «ImportError: No module named ‘keyboard’», поэтому это не сработало. Я проверил репозиторий GitHub и обнаружил связанную проблему, но она не решает проблему. Затем я попытался загрузить репо и выполнить некоторые из его примеров, но получаю сообщение «ImportError: вы должны быть пользователем root, чтобы использовать эту библиотеку в Linux», как ранее прокомментировал @Inaimathi. По-видимому, это кажется полноценным модулем для управления клавиатурой с помощью Python, но требования root — это большой недостаток :(
  • 3 «Чтобы избежать зависимости от X, части Linux читают необработанные файлы устройств (/ dev / input / input *), но для этого требуется root».
  • 8 Я не понимаю, почему попытка: except: может быть полезной.

Для тех, кто работает с окнами и изо всех сил пытается найти рабочий ответ, вот мой: pynput

Приведенная выше функция будет печатать, какую бы клавишу вы ни нажимали, плюс запускает действие, когда вы отпускаете клавишу «esc». Документация по клавиатуре здесь для более разнообразного использования.

Маркус фон Броади выделил потенциальную проблему, а именно: для этого ответа не требуется, чтобы вы были в текущем окне, чтобы этот скрипт был активирован, решение для Windows:

  • 7 @ nimig18 … и не требует рута :)
  • 1 Есть проблема с этим решением (не уверен в альтернативах): клавишу не нужно нажимать внутри окна консоли, чтобы она вступила в силу. Представьте, что у вас есть скрипт, который выполняет некоторую работу до тех пор, пока не будет нажата клавиша ESC, а затем вы нажмете ее в другой программе.
  • 1 @MarkusvonBroady Я предполагаю, что win32gui будет достаточно, чтобы решить эту проблему, я отредактировал свой ответ таким образом, чтобы потенциально решить его, по крайней мере, для пользователей Windows.
  • @Mitrek Я пробовал это, но мой код останавливает дальнейшее выполнение и застревает здесь. Он работает как input (). У меня есть код, выполняющийся в selenium, firefox, но как только эта последовательность встречается, дальнейших действий нет.
  • 1 Должен был быть принятый ответ, потому что он работает как в Linux, так и в Windows

Больше вещей можно сделать с модуль. Вы можете установить этот модуль, используя Вот некоторые из методов:

Клавиатура

Написание

Написание слов с анимацией

Вы можете написать алфавит, слово или предложение с помощью функции из класса pyautogui. Он также предлагает задержку между каждым набирающим словом, что делает его более фантастическим.

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

Нажатие клавиш

Нажатие клавиш

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

Чтобы нажать более одной клавиши, передать список, он принимает другой необязательный атрибут, который ограничивает количество нажатий клавиш (клавиши).

Существует также еще один атрибут – интервал между нажатиями клавиш.

Ключи для этой функции определены и могут быть получены с помощью следующей опции . Он напечатает список определенных ключей, которые он поддерживает. Например: , , , , . Смотрите  .

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

Сочетания клавиш

Нажатие на ярлык

Для удобства нажатия горячих клавиш или сочетаний клавиш  можно передать несколько последовательностей клавиш, которые будут нажаты по порядку, а затем отпущены в обратном порядке.

Вышеуказанный код эквивалентен

PIP — что это?

Речь идет об утилите командной строки, позволяющей инсталлировать и деинсталлировать программные пакеты PyPI с помощью простейшей команды . Еще PIP («пип») называют системой управления программными пакетами, написанными на языке Python. Подразумеваются пакеты, которые находятся в центральном репозитории PyPI.

Чаще всего работа с PIP не вызывает проблем, особенно если у пользователя уже есть опыт работы с терминалом в операционной системе Windows, Linux, Mac.

Также стоит отметить, что для Python серии 3.4 и выше PIP уже установлен (installed), так как он устанавливается (installs) по умолчанию одновременно с Пайтоном. Именно поэтому для начала надо проверить версию Python, которая есть на компьютере. Седлать это несложно: просто запустите в терминале следующую команду:

Эта команда работает для Windows и Mac. Если у пользователя установлена операционная система Linux, то команда для Python 2 будет аналогичной, а вот для версии 3 будет немного отличаться:

Для тех, кто забыл: для запуска терминала командной строки нужно выполнить простые действия:

  • для Windows — комбинация клавиш Win+X;
  • для Mac — Command+пробел;
  • для Linux — Ctrl+Alt+T (возможны различия в зависимости от установленного дистрибутива).

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

Если вы получили аналогичный результат, Python готов к работе. Если нет, его необходимо сначала установить (когда Пайтон не установлен, выдается сообщение «Python is not defined»).

Метод №4:

На этот метод уже ответил user8167727 но я не согласен с кодом, который они сделали. Он будет использовать функцию а по-другому:

Это разорвет цикл, как п нажата.

Ноты:

  • будет читать нажатия клавиш со всей ОС.
  • требует рут в Linux
  • 11 Самый большой НЕГАТИВ при использовании модуля клавиатуры — это требование, чтобы вы запускали его как ROOT-пользователь. Это делает модуль запрещенным в моем коде. Просто для того, чтобы узнать, была ли нажата клавиша, не требуются привилегии root. Я прочитал документ и понимаю, почему ограничение выходит в модуле, но посмотрите в другом месте, если все, что вам нужно, это опросить ключ …
  • Очень полезная информация, сэр! Я хотел знать, могу ли я использовать ждать более 1 клавиши и продолжить, если одна из них будет нажата
  • @PreetkaranSingh не дает этой функциональности. Вам придется использовать с условием if, упакованным в цикл while. См. Способ №1
  • Спасибо, сэр !, не могли бы вы пролить свет на использование ключевых слов в , когда его использовать, а когда нет ….
  • @PreetkaranSingh Я бы хотел, но у меня недостаточно информации об аргументе подавления

Поскольку OP упоминает raw_input — это означает, что ему нужно решение cli. Linux: curses — это то, что вам нужно (Windows PDCurses). Curses, это графический API для программного обеспечения cli, вы можете добиться большего, чем просто обнаруживать ключевые события.

Этот код будет обнаруживать клавиши до тех пор, пока не будет нажата новая строка.

  • Это действительно здорово. Пришлось искать вечно, прежде чем наткнуться на это. Кажется намного чище, чем возиться с и так далее …
  • 5 нужно добавить чтобы иметь возможность выйти, выйдите из примера.
  • Если вы сделаете вместо , он не будет генерировать миллион исключений в секунду.

За Windows вы могли бы использовать как это:

8 msvcrt — это модуль только для Windows

1 Я действительно использую pynput сейчас, это может быть лучшим ответом Обратите внимание, что pynput для работы в OS X (не знаю о Linux) должен запускаться как root, чтобы работать. Для некоторых это может быть неудачным решением

Я мог бы поклясться, что вопрос касался «кроссплатформенности» или «Linux» …

Используйте этот код, чтобы узнать, какая клавиша нажата

  • Но вот в чем дело: я использую macOS и устанавливаю как pynput, так и клавиатуру отдельно, и программа работает без каких-либо ошибок, но может только обнаруживать (в оболочке python) специальные клавиши. Буквенно-цифровые ключи не обнаруживаются и, наоборот, считаются так, как если бы я писал код в оболочке. Вы знаете, в чем может быть проблема?
  • Тот же код работал у меня в оболочке. Пожалуйста, проверь это. В пакете клавиатуры этот код не требуется.
  • 1 Это путь в Linux, так как библиотека клавиатуры требует root.
  • 1 Это решение обнаружит все нажатие клавиши; также те, которые происходят в другом окне терминала. К сожалению, это сильно ограничивает возможные варианты использования.

Используйте PyGame, чтобы получить окно, а затем вы можете получить ключевые события.

Для письма :

Итак, я сделал эту … своего рода игру … на основе этого сообщения (используя библиотеку msvcr и Python 3.7).

Ниже приводится «основная функция» игры — обнаружение нажатых клавиш:

Если вам нужен полный исходный код программы, вы можете увидеть его или скачать отсюда:

Игра с секретным ключом (GitHub)

(примечание: секретное нажатие клавиши: Ctrl+F12)

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

Я бы посоветовал вам использовать PyGame и добавить дескриптор события.

http://www.pygame.org/docs/ref/event.html

Это из пакета openCV. Он обнаруживает нажатие клавиши без ожидания.

клавиатура. add_abbreviation (source_text, replacement_text, match_suffix = False, timeout = 2)

Регистрирует горячую клавишу, заменяющую одну набранный текст с другим. Например,

 add_abbreviation ('tm', u '') 

Заменяет каждое «tm», за которым следует пробел, на символ (без пробела). Замена выполняется путем отправки событий возврата.

  • определяет, должны ли также проверяться окончания слов, а не только целые слова. Например. если true, то при вводе «ковер» + пробел запускается прослушиватель для «питомца». По умолчанию false, проверяются только целые слова.
  • — максимальное количество секунд между набираемыми символами, прежде чем текущее слово будет отброшено. По умолчанию 2 секунды.

Подробнее см. .

Метод №4:

На этот метод уже ответил user8167727 но я не согласен с кодом, который они сделали. Он будет использовать функцию а по-другому:

Это разорвет цикл, как п нажата.

Ноты:

  • будет читать нажатия клавиш со всей ОС.
  • требуется рут в Linux
  • 11 Самый большой НЕГАТИВ при использовании модуля клавиатуры — это требование, чтобы вы запускали его как ROOT-пользователь. Это делает модуль запрещенным в моем коде. Просто для того, чтобы узнать, была ли нажата клавиша, не требуются привилегии root. Я прочитал документ и понимаю, почему ограничение выходит в модуле, но посмотрите в другом месте, если все, что вам нужно, это опросить ключ …
  • Очень полезная информация, сэр! Я хотел знать, могу ли я использовать для ожидания более 1 клавиши и продолжения при нажатии любой из них
  • @PreetkaranSingh не дает этой функциональности. Вам придется использовать с условием if, упакованным в цикл while. См. Способ №1
  • Спасибо, сэр !, не могли бы вы пролить свет на использование ключевых слов в , когда его использовать, а когда нет ….
  • @PreetkaranSingh Я бы хотел, но у меня недостаточно информации об аргументе подавления

Поскольку OP упоминает raw_input — это означает, что ему нужно решение cli. Linux: curses — это то, что вам нужно (Windows PDCurses). Curses, это графический API для программного обеспечения cli, вы можете добиться большего, чем просто обнаруживать ключевые события.

Этот код будет обнаруживать клавиши, пока не будет нажата новая строка.

  • Это действительно здорово. Пришлось искать вечно, прежде чем наткнуться на это. Кажется намного чище, чем возиться с и так далее …
  • 5 нужно добавить чтобы иметь возможность выйти, выйдите из примера.
  • Если вы сделаете вместо , он не будет генерировать миллион исключений в секунду.

За Windows вы могли бы использовать как это:

8 msvcrt — это модуль только для Windows

1 Я действительно использую pynput сейчас, это может быть лучшим ответом Обратите внимание, что pynput для работы в OS X (не знаю о Linux) должен запускаться как root, чтобы работать. Для некоторых это может быть неудачным решением

Я мог бы поклясться, что вопрос касался «кроссплатформенности» или «Linux» …

Используйте этот код, чтобы узнать, какая клавиша нажата

  • Но вот в чем дело: я использую macOS и устанавливаю как pynput, так и клавиатуру отдельно, и программа работает без каких-либо ошибок, но может только обнаруживать (в оболочке python) специальные клавиши. Буквенно-цифровые ключи не обнаруживаются и, наоборот, считаются так, как если бы я писал код в оболочке. Вы знаете, в чем может быть проблема?
  • Тот же код работал у меня в оболочке. Пожалуйста, проверь это. В пакете клавиатуры этот код не требуется.
  • 1 Это путь в Linux, так как библиотека клавиатуры требует root.
  • 1 Это решение обнаружит все нажатие клавиши; также те, которые происходят в другом окне терминала. К сожалению, это сильно ограничивает возможные варианты использования.

Используйте PyGame, чтобы получить окно, а затем вы можете получить ключевые события.

Для письма :

Итак, я сделал эту … своего рода игру … на основе этого сообщения (используя библиотеку msvcr и Python 3.7).

Ниже приводится «основная функция» игры — обнаружение нажатых клавиш:

Если вам нужен полный исходный код программы, вы можете увидеть его или скачать отсюда:

Игра с секретным ключом (GitHub)

(примечание: секретное нажатие клавиши: Ctrl+F12)

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

Я бы посоветовал вам использовать PyGame и добавить дескриптор события.

http://www.pygame.org/docs/ref/event.html

Это из пакета openCV. Он обнаруживает нажатие клавиши без ожидания.

Настройка иконки, названия и размера основного окна

Экземпляр Tk отличается от обычных виджетов тем, как он настраивается. Рассмотрим основные методы, которые позволяют настраивать внешний вид.

Этот кусок кода создает основное окно с заданными названием и иконкой. Его ширина — 400 пикселей, а высота — 200. Плюс, есть разделение в 10px по каждой оси к левому верхнему углу экрана.

Копировать

Программа предполагает, что есть валидный ICO-файл python.ico в той же директории, где находится и сам скрипт. Вот результат:

Как работает настройка окна

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

Метод настраивает размер окна с помощью строки со следующим шаблоном:

{width}x{height}+{of set_x}+{of set_y}

Если в приложении есть дополнительные окна, то эти же методы доступны в классе .

Чтобы сделать приложение полноэкранным, нужно заменить вызов метода на .

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: