Python adapter

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
DrKnS
Posts: 4504
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 112 times
Contact:

Python adapter

Postby DrKnS » Wed 30 Dec, 2015 17:52

Не прошло и трёх лет, как у меня дошли руки набросать демо.

В аттаче пример для Python. Умеет добавлять пункт в меню плагинов и показывать сакральную фразу под панелями.
Attachments
pygin_20170515_6117a9d.7z
(406.83 KiB) Downloaded 5 times

User avatar
cmd.exe
Posts: 317
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 168 times
Been thanked: 5 times
Contact:

Python adapter

Postby cmd.exe » Sun 03 Jan, 2016 20:46

Latest post of the previous page:

DrKnS wrote:Source of the postПитон не особо умеет выгрузку вообще. Но перегрузить вроде бы можно. Версия в шапке обновлена.
Но мы можем reload(module).
Для Python 2 использования встроенной функции перезагрузки ():
reload(module)
Для Python 2 и 3,2-3,3 использования перезагрузки модуля с имп:
imp.reload(module)
Но imp устарела начиная с версии 3.4 в пользу importlib, так что используйте:
importlib.reload(module)
Возможно добавить такую возможность в pygin?
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates

User avatar
DrKnS
Posts: 4504
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 112 times
Contact:

Python adapter

Postby DrKnS » Sun 03 Jan, 2016 21:02

Так в процитированном же уже.

User avatar
cmd.exe
Posts: 317
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 168 times
Been thanked: 5 times
Contact:

Python adapter

Postby cmd.exe » Sun 03 Jan, 2016 22:41

А возможно добавить настройки директорий где находятся скрипты и ддлки? А то я тут по граблям походил с часок...
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates

User avatar
DrKnS
Posts: 4504
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 112 times
Contact:

Python adapter

Postby DrKnS » Sun 03 Jan, 2016 23:24

cmd.exe wrote:Source of the post А возможно добавить настройки директорий где находятся скрипты и ддлки?
См. исходную тему - это адаптер. Он не решает, откуда ему грузить, он грузит, что дают.
cmd.exe wrote:Source of the post А то я тут по граблям походил с часок...
readme.txt в архиве же.

gotar
Posts: 293
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

Python adapter

Postby gotar » Mon 04 Jan, 2016 01:41

Правильно ли я понимаю, что идея подавать на вход функции IsPlugin каталоги Вам категорически не нравится? Нельзя ли в архив класть файл whatsnew.txt.

User avatar
DrKnS
Posts: 4504
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 112 times
Contact:

Python adapter

Postby DrKnS » Mon 04 Jan, 2016 02:07

gotar wrote:Source of the post Правильно ли я понимаю, что идея подавать на вход функции IsPlugin каталоги Вам категорически не нравится?
Я повторю: см. исходную тему - это адаптер. На вход подаёт фар, для фара плагином бывает только файл, так сложилось исторически.

gotar
Posts: 293
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

Python adapter

Postby gotar » Mon 04 Jan, 2016 10:07

Как обращаться к функциям из структуры FarStandardFunctions?

User avatar
DrKnS
Posts: 4504
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 112 times
Contact:

Python adapter

Postby DrKnS » Mon 04 Jan, 2016 10:23

Пока никак.

User avatar
cmd.exe
Posts: 317
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 168 times
Been thanked: 5 times
Contact:

Python adapter

Postby cmd.exe » Mon 04 Jan, 2016 13:17

DrKnS wrote:Source of the post См. исходную тему - это адаптер. Он не решает, откуда ему грузить, он грузит, что дают.
Я про пути которые pygin читает из path функцией AddToPythonPath, если не нашли питон то выдать ошибку. А то не понятно что ему нехватает.
path=%path%;D:\Environments\Python35\x64\Scripts\;D:\Environments\Python35\x64\ не помагает, плагин не отрабатывает если при старте фара не нашёл пути до питона.
По этому в переменные среды системы, добавить данные пути. Причём в самое начало, иначе не находит.
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates

User avatar
zg
zero-gravity
Posts: 5227
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

Python adapter

Postby zg » Mon 04 Jan, 2016 13:50

видимо в path есть пути до более старого питона, не?

User avatar
DrKnS
Posts: 4504
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 112 times
Contact:

Python adapter

Postby DrKnS » Mon 04 Jan, 2016 13:51

cmd.exe wrote:Я про пути которые pygin читает из path функцией AddToPythonPath, если не нашли питон то выдать ошибку.
Смешалисьвкучуконилюди

Адаптер ничего не читает из %path% и не ищет питон.
Зависимость от python35.dll статическая, ищет её Windows, поэтому надо прописывать в %path%.
AddToPythonPath - это то, откуда питон будет загружать конечный скрипт по имени и к загрузке самого питона оно не относится.

User avatar
cmd.exe
Posts: 317
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 168 times
Been thanked: 5 times
Contact:

Python adapter

Postby cmd.exe » Mon 04 Jan, 2016 22:42

DrKnS wrote:Source of the post Смешалисьвкучуконилюди
Все дело в том что pigin.dll читает path на момент запуска фара. Его нельзя загрузить динамически. После добавления путей до питона в path (я использую Environment Manager) запустить фар из фара.
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates

User avatar
techie
Posts: 712
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 22 times
Been thanked: 2 times

Python adapter

Postby techie » Sun 10 Jan, 2016 15:29

DrKnS wrote:
techie wrote:Source of the post А нельзя выбрать с какой версией дружить? Или выбрать её автоматом в расчёте на то, что питоновский код совместим между версиями.
Нельзя, увы. Линкуется с pythonNN.dll статически, другого способа я не знаю.
Говорят, что можно LoadLibrary + GetProcAddress. Не?

User avatar
techie
Posts: 712
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 22 times
Been thanked: 2 times

Python adapter

Postby techie » Sun 10 Jan, 2016 15:47

DrKnS wrote:
techie wrote:Source of the post Когда ошибка в скрипте, непонятно как дебажить. Всё что есть это вот.
Ошибка выводится в stdout. Если запусить с погашенными панелями, будет видно.
Если ошибка синтаксиса, типа , то вот общее сообщение "Error loading plugin" показывается при старте, в меню ничего нет и никаких сообщений за панелями не видно.

Как кстати посмотреть версию pygin.dll? Никаких строчек вида "version 1.0" внутри не обнаружено.
Attachments
nohello.png
nohello.png (3.73 KiB) Viewed 2078 times

User avatar
techie
Posts: 712
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 22 times
Been thanked: 2 times

Python adapter

Postby techie » Sun 10 Jan, 2016 16:02

Ещё последняя версия крэшится, если скопировать "helloworld.py", а не "helloworld" в Plugins.

User avatar
DrKnS
Posts: 4504
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 112 times
Contact:

Python adapter

Postby DrKnS » Sun 10 Jan, 2016 16:32

techie wrote:Говорят, что можно LoadLibrary + GetProcAddress. Не?
Это ж надо бойлерплейта написать ещё больше, чем для интеграции с Far.
techie wrote:общее сообщение "Error loading plugin" показывается при старте, в меню ничего нет и никаких сообщений за панелями не видно.
Следи за руками:
- гасим панели
- сохраняем настройки
- перезапускаем
techie wrote:Как кстати посмотреть версию pygin.dll? Никаких строчек вида "version 1.0" внутри не обнаружено.
Пока никак. Адаптер, в принципе, сообщает фару свою версию при загрузке, но дальше она нигде не используется. Надо будет, наверное, в far:about добавить.
techie wrote:Ещё последняя версия крэшится, если скопировать "helloworld.py", а не "helloworld" в Plugins.
Точки в именах папок нельзя, да.

User avatar
techie
Posts: 712
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 22 times
Been thanked: 2 times

Python adapter

Postby techie » Sun 10 Jan, 2016 16:58

DrKnS wrote: Это ж надо бойлерплейта написать ещё больше, чем для интеграции с Far.
Скока? Может написано уже всё? Как Far свои плагины подгружает? Если показать как выглядит этот бойлерплейт, то я могу попробовать автоматом снегерить или погуглить уже готовый по ключевам словам.
DrKnS wrote: Следи за руками:
Эээ. Это каждый раз так делать при вылете? :o
DrKnS wrote:Точки в именах папок нельзя, да.
Так это, в дистрибутиве оно с точкой.
Last edited by HaRT on Sun 10 Jan, 2016 22:42, edited 1 time in total.
Reason: Спрятан оверквотинг


Return to “Разработка плагинов”

Who is online

Users browsing this forum: No registered users and 1 guest