KPCLibPy is a KeePass command application written in Python.
The original KeePass by Dominik Reichl is a
.NET application written in C#. KeePassLib
is part of KeePass which
can be built as a library to support the major functions of KeePass.
However, at the moment, KeePassLib
is still built for .NET framework
which can run on Windows only. I modified KeePassLib
and extended it
as a .NET Standard library -
KPCLib.
KPCLib stands for KeePass
Portable Class Library at the time when I started the work. Portable
Class Library (PCL) is replaced by .NET Standard Library nowadays.
KPCLibPy is just a Python
wrapper of KPCLib using
Python.NET. In this perspective,
KPCLibPy
is fully compatible to the original KeePass, since the
majority of code is the same as KeePass.
In order to save the development effort and have a nice user interface, the Python library python-nubia from Facebook is used as the framework to support command line interface.
- Full compatible with the original KeePass
- .NET Standard 2.0 support with KPCLib
- Cross platform support with .NET Standard and .NET core
- Nice user interface with python-nubia
- Interactive mode that offers fish-style auto-completion
As a developer, you can use KPCLibPy from GitHub directly.
git clone https://github.com/shugaoye/KPCLibPy.git
cd KPCLibPy
pip install -r requirements.txt
cd src
python3 ./nubia_main.py
For normal user, KPCLibPy can be installed using pip.
$ pip install kpclibpy $ keepass
A Dockr image - docker-mono can be used on Linux or Windows 10 (WSL).
The default location for database files is at $HOME/.kpclibdb (or %USERPROFILE%.kpclibdb on Windows). To change the default location, a configuration file kpclibpy.ini can be created in the folder $HOME/.kpclibdb. .. code:
[DEFAULT] homepath = {your data path}
On Windows platform, you may get the below error message:
Unhandled exception in event loop: File "c:\users\kpclibpy\appdata\local\programs\python\python38-32\lib\asyncio\proactor_events.py", line 768, in _loop_self_reading f.result() # may raise File "c:\users\kpclibpy\appdata\local\programs\python\python38-32\lib\asyncio\windows_events.py", line 808, in _poll value = callback(transferred, key, ov) File "c:\users\kpclibpy\appdata\local\programs\python\python38-32\lib\asyncio\windows_events.py", line 457, in finish_recv raise ConnectionResetError(*exc.args) Exception [WinError 995] The I/O operation has been aborted because of either a thread exit or an application request Press ENTER to continue...
This is an issue of prompt-toolkit. You can change prompt-toolkit to version 2.x.
pip install -U prompt-toolkit~=2.0