openstenoproject / plover_plugins_manager

Plugins manager for Plover
3 stars 7 forks source link

Add the ability to install plugins from a local source #4

Closed nsmarkop closed 6 years ago

nsmarkop commented 6 years ago

When doing plugin development it would be convenient to be able to use the plugin manager to install / uninstall a plugin from its local source code folder rather than needing to run Plover from source with an external pip install on the plugin source code folder.

benoit-pierre commented 6 years ago

I won't modify the GUI to support it, but this was intended to be supported when installing from the command line, e.g.: plover -s plover_plugins install -e path_to_plugins_source_directory.

This currently does not work because user site packages are disabled for our distributions; and although this does not prevent pip install --user from working it does prevent setuptools' develop command from allowing --user, making editable installs fail. This will need to be fixed in Plover.

Note that you can also just set PYTHONPATH before starting Plover (at least on Linux, I have not tested this on Windows/macOS).

nsmarkop commented 6 years ago

Should I make an issue on the Plover repo about fixing the issue mentioned in your second paragraph? I'm not sure I fully understand it due to unfamiliarity with Python's ecosystem, though.

Running plover_console.exe -s plover_plugins install X without having it editable seems to install, but borked my install and I get a notification error for every plugin contained within that one I tried to install (good thing Windows has a clear all notification option as it otherwise locks my notification area down for a minute or two with constant binging noises) without a way to uninstall it since Plover seems to think it's missing.

C:\Program Files (x86)\Open Steno Project\Plover 4.0.0.dev6+5.ga564116>plover_console.exe -s plover_plugins install O:\Software\Projects\plover_korean
Processing o:\software\projects\plover_korean
Requirement not upgraded as not directly required: plover>=4.0.0.dev6 in c:\program files (x86)\open steno project\plover 4.0.0.dev6+5.ga564116\data\lib\site-packages (from plover-korean==0.0.3)
Requirement not upgraded as not directly required: plover-python-dictionary>=0.5.9 in c:\users\nsmar\appdata\local\plover\plover\plugins\win\python36\site-packages (from plover-korean==0.0.3)
Collecting hgtk>=0.1.1 (from plover-korean==0.0.3)
Requirement not upgraded as not directly required: appdirs>=1.3.0 in c:\program files (x86)\open steno project\plover 4.0.0.dev6+5.ga564116\data\lib\site-packages (from plover>=4.0.0.dev6->plover-korean==0.0.3)
Requirement not upgraded as not directly required: PyQt5>=5.5 in c:\program files (x86)\open steno project\plover 4.0.0.dev6+5.ga564116\data\lib\site-packages (from plover>=4.0.0.dev6->plover-korean==0.0.3)
Requirement not upgraded as not directly required: setuptools in c:\program files (x86)\open steno project\plover 4.0.0.dev6+5.ga564116\data\lib\site-packages (from plover>=4.0.0.dev6->plover-korean==0.0.3)
Requirement not upgraded as not directly required: plyer==1.2.4; "win32" in sys_platform in c:\program files (x86)\open steno project\plover 4.0.0.dev6+5.ga564116\data\lib\site-packages (from plover>=4.0.0.dev6->plover-korean==0.0.3)
Requirement not upgraded as not directly required: pyserial>=2.7 in c:\program files (x86)\open steno project\plover 4.0.0.dev6+5.ga564116\data\lib\site-packages (from plover>=4.0.0.dev6->plover-korean==0.0.3)
Requirement not upgraded as not directly required: sip<4.20,>=4.19.4 in c:\program files (x86)\open steno project\plover 4.0.0.dev6+5.ga564116\data\lib\site-packages (from PyQt5>=5.5->plover>=4.0.0.dev6->plover-korean==0.0.3)
Installing collected packages: hgtk, plover-korean
  Running setup.py install for plover-korean ... done
Successfully installed hgtk-0.1.1 plover-korean-0.0.3
C:\Program Files (x86)\Open Steno Project\Plover 4.0.0.dev6+5.ga564116>plover_console.exe -s plover_plugins list_plugins
2018-02-11 17:06:29,438 [MainThread] ERROR: error loading meta plugin: ko_particle_da (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,451 [MainThread] ERROR: error loading meta plugin: ko_particle_ga (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,454 [MainThread] ERROR: error loading meta plugin: ko_particle_generic (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,460 [MainThread] ERROR: error loading meta plugin: ko_particle_myeo (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,464 [MainThread] ERROR: error loading meta plugin: ko_particle_na (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,468 [MainThread] ERROR: error loading meta plugin: ko_particle_neun (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,472 [MainThread] ERROR: error loading meta plugin: ko_particle_ra (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,478 [MainThread] ERROR: error loading meta plugin: ko_particle_rang (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,481 [MainThread] ERROR: error loading meta plugin: ko_particle_reul (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,485 [MainThread] ERROR: error loading meta plugin: ko_particle_ro (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,488 [MainThread] ERROR: error loading meta plugin: ko_particle_wa (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,492 [MainThread] ERROR: error loading meta plugin: ko_particle_ya (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,495 [MainThread] ERROR: error loading system plugin: Korean Stenotype (CAS) (from plover_korean.system_cas)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,557 [MainThread] ERROR: error loading meta plugin: ko_particle_da (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,562 [MainThread] ERROR: error loading meta plugin: ko_particle_ga (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,564 [MainThread] ERROR: error loading meta plugin: ko_particle_generic (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,568 [MainThread] ERROR: error loading meta plugin: ko_particle_myeo (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,571 [MainThread] ERROR: error loading meta plugin: ko_particle_na (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,575 [MainThread] ERROR: error loading meta plugin: ko_particle_neun (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,579 [MainThread] ERROR: error loading meta plugin: ko_particle_ra (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,582 [MainThread] ERROR: error loading meta plugin: ko_particle_rang (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,585 [MainThread] ERROR: error loading meta plugin: ko_particle_reul (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,587 [MainThread] ERROR: error loading meta plugin: ko_particle_ro (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,590 [MainThread] ERROR: error loading meta plugin: ko_particle_wa (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,594 [MainThread] ERROR: error loading meta plugin: ko_particle_ya (from plover_korean.meta)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
2018-02-11 17:06:29,599 [MainThread] ERROR: error loading system plugin: Korean Stenotype (CAS) (from plover_korean.system_cas)
Traceback (most recent call last):
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\plover\registry.py", line 56, in register_plugin_from_entrypoint
  File "dist\plover-4.0.0.dev6+5.ga564116-win32\data\Lib\site-packages\pkg_resources\__init__.py", line 2322, in resolve
ModuleNotFoundError: No module named 'plover_korean'
plover-dict-commands (0.2.5)  - Dictionaries stack manipulation commands for Plover
plover-dictionary-builder (0.0.4)  - Build up a steno dictionary from text content
  INSTALLED: 0.0.4
  LATEST:    0.0.4
plover-excel-dictionary (0.2.4)  - Excel dictionaries support for Plover
plover-italian-stentura (0.5.6)  - Italian Stentura support for Plover
plover-last-translation (0.0.2)  - Macro plugins for Plover to repeat output.
  INSTALLED: 0.0.2
  LATEST:    0.0.2
plover-layout-display (0.0.2)  - Display last chord hit in Plover
  INSTALLED: 0.0.2
  LATEST:    0.0.2
plover-michela (0.1.1)  - Michela (Italian system) support for Plover
plover-midi (0.2.6)  - MIDI keyboards/machines support for Plover
  INSTALLED: 0.2.6
  LATEST:    0.2.6
plover-palantype (0.6.0)  - Possum Palantype support for Plover
plover-plugins-manager (0.5.9)  - Plugins manager for Plover
  INSTALLED: 0.5.9
  LATEST:    0.5.9
plover-python-dictionary (0.5.9)  - Python dictionaries support for Plover
  INSTALLED: 0.5.9
  LATEST:    0.5.9
plover-russian-trillo (0.0.1)  - Russian realtime system for Plover
plover_system_switcher (0.0.2)  - Plover command plugin for switching systems.
  INSTALLED: 0.0.2
  LATEST:    0.0.2
plover-treal (1.0.1)  - Tréal support for Plover
  INSTALLED: 1.0.1
  LATEST:    1.0.1
plover-vlc-commands (0.6.5)  - VLC commands for Plover
  INSTALLED: 0.6.5
  LATEST:    0.6.5
plover-windows-brightness (0.0.2)  - Change Windows monitor brightness with Plover
plover_wpm_meter (0.2.2)  - A meter to show your typing speed in Plover
  INSTALLED: 0.2.2
  LATEST:    0.2.2

By setting PYTHONPATH before starting Plover, what do you mean? Setting it to the directory of a plugin I want to use doesn't seem to do anything on Windows but I may be misunderstanding.

benoit-pierre commented 6 years ago

It's difficult to understand what went wrong with the installation without more info. I suggest running the install command with -v and looking at the log, as well as installing from a source distribution / wheel to compare the result (maybe you're missing things?).

Regarding PYTHONPATH, I meant setting the environment variable to point to your source directory pior to running Plover. I know this work on Linux, but it may not with the Windows distribution (stricter isolation).

Note there's an uninstall command too, you can trying using to unbork your installation (and yes, the fact that the plugins manager does not show the plugin as installed is another issue). Use: plover -s plover_plugins uninstall plover-korean.

Anyway, I know how to fix editable installs with the AppImage on Linux. Said fix can, I expect, be used for the macOS distribution too. Windows is different, because of the embedded distribution we use. I need to look more into it...

nsmarkop commented 6 years ago

I started using -v with pip install and noticed I had py_modules in my setup declared improperly (should have been listed as packages instead, so it had some message about a module not existing) - switching that to what it should be seems to have made the install via the Plover console work. I actually run Plover from source all of the time with that plugin installed via pip so I have no idea how that was working but this wasn't...

Thanks for the help through this, though. Unfortunately I can't help on technical insight into any changes needed for Windows but if you need a guinea pig on Windows I can help with anything there.