Pygin — Python adapter

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

Pygin — Python adapter

Post by DrKnS »

Image

Не прошло и трёх лет, как у меня дошли руки набросать демо для Python.
Умеет добавлять пункт в меню плагинов и показывать сакральную фразу под панелями.
User avatar
cmd.exe
Posts: 378
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 181 times
Been thanked: 10 times
Contact:

Python adapter

Post by cmd.exe »

Latest post of the previous page:

DrKnS wrote:Питон не особо умеет выгрузку вообще. Но перегрузить вроде бы можно. Версия в шапке обновлена.
Но мы можем 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: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Python adapter

Post by DrKnS »

Так в процитированном же уже.
User avatar
cmd.exe
Posts: 378
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 181 times
Been thanked: 10 times
Contact:

Python adapter

Post by cmd.exe »

А возможно добавить настройки директорий где находятся скрипты и ддлки? А то я тут по граблям походил с часок...
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: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Python adapter

Post by DrKnS »

cmd.exe wrote: А возможно добавить настройки директорий где находятся скрипты и ддлки?
См. исходную тему - это адаптер. Он не решает, откуда ему грузить, он грузит, что дают.
cmd.exe wrote: А то я тут по граблям походил с часок...
readme.txt в архиве же.
gotar
Posts: 420
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Python adapter

Post by gotar »

Правильно ли я понимаю, что идея подавать на вход функции IsPlugin каталоги Вам категорически не нравится? Нельзя ли в архив класть файл whatsnew.txt.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Python adapter

Post by DrKnS »

gotar wrote: Правильно ли я понимаю, что идея подавать на вход функции IsPlugin каталоги Вам категорически не нравится?
Я повторю: см. исходную тему - это адаптер. На вход подаёт фар, для фара плагином бывает только файл, так сложилось исторически.
gotar
Posts: 420
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Python adapter

Post by gotar »

Как обращаться к функциям из структуры FarStandardFunctions?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Python adapter

Post by DrKnS »

Пока никак.
User avatar
cmd.exe
Posts: 378
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 181 times
Been thanked: 10 times
Contact:

Python adapter

Post by cmd.exe »

DrKnS wrote: См. исходную тему - это адаптер. Он не решает, откуда ему грузить, он грузит, что дают.
Я про пути которые 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: 6034
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Python adapter

Post by zg »

видимо в path есть пути до более старого питона, не?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Python adapter

Post by DrKnS »

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

Адаптер ничего не читает из %path% и не ищет питон.
Зависимость от python35.dll статическая, ищет её Windows, поэтому надо прописывать в %path%.
AddToPythonPath - это то, откуда питон будет загружать конечный скрипт по имени и к загрузке самого питона оно не относится.
User avatar
cmd.exe
Posts: 378
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 181 times
Been thanked: 10 times
Contact:

Python adapter

Post by cmd.exe »

DrKnS wrote: Смешалисьвкучуконилюди
Все дело в том что 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: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 6 times

Python adapter

Post by techie »

DrKnS wrote:
techie wrote: А нельзя выбрать с какой версией дружить? Или выбрать её автоматом в расчёте на то, что питоновский код совместим между версиями.
Нельзя, увы. Линкуется с pythonNN.dll статически, другого способа я не знаю.
Говорят, что можно LoadLibrary + GetProcAddress. Не?
User avatar
techie
Posts: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 6 times

Python adapter

Post by techie »

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

Как кстати посмотреть версию pygin.dll? Никаких строчек вида "version 1.0" внутри не обнаружено.
Attachments
nohello.png
nohello.png (3.73 KiB) Viewed 14261 times
User avatar
techie
Posts: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 6 times

Python adapter

Post by techie »

Ещё последняя версия крэшится, если скопировать "helloworld.py", а не "helloworld" в Plugins.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Python adapter

Post by DrKnS »

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.
Точки в именах папок нельзя, да.
Post Reply

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