docs: python bindings installation
* lang/python/docs/gpgme-python-howto.org: added a section on installing the bindings to a python virtualenv.
This commit is contained in:
parent
b9aea3b9c2
commit
1d40d360bc
@ -561,6 +561,73 @@ things are lacking. That doesn't even take into account the amount of
|
|||||||
work saved via SWIG's code generation techniques either.
|
work saved via SWIG's code generation techniques either.
|
||||||
|
|
||||||
|
|
||||||
|
*** Virtualised Environments
|
||||||
|
:PROPERTIES:
|
||||||
|
:CUSTOM_ID: snafu-venv
|
||||||
|
:END:
|
||||||
|
|
||||||
|
It is fairly common practice amongst Python developers to, as much as
|
||||||
|
possible, use packages like virtualenv to keep various things that are
|
||||||
|
to be installed from interfering with each other. Given how much of
|
||||||
|
the GPGME bindings is often at odds with the usual pythonic way of
|
||||||
|
doing things, it stands to reason that this would be called into
|
||||||
|
question too.
|
||||||
|
|
||||||
|
As it happens the answer as to whether or not the bindings can be used
|
||||||
|
with virtualenv, the answer is both yes and no.
|
||||||
|
|
||||||
|
In general we recommend installing to the relevant path and matching
|
||||||
|
prefix of GPGME itself. Which means that when GPGME, and ideally the
|
||||||
|
rest of the GnuPG stack, is installed to a prefix like =/usr/local= or
|
||||||
|
=/opt/local= then the bindings would need to be installed to the main
|
||||||
|
Python installation and not a virtualised abstraction. Attempts to
|
||||||
|
separate the two in the past have been known to cause weird and
|
||||||
|
intermittent errors ranging from minor annoyances to complete failures
|
||||||
|
in the build process.
|
||||||
|
|
||||||
|
As a consequence we only recommend building with and installing to the
|
||||||
|
main Python installations within the same prefix as GPGME is installed
|
||||||
|
to or which are found by GPGME's configuration stage immediately prior
|
||||||
|
to running the make commands. Which is exactly what the compiling and
|
||||||
|
installing process of GPGME does by default.
|
||||||
|
|
||||||
|
Once that is done, however, it appears that a copy the compiled module
|
||||||
|
may be installed into a virtualenv of the same major and minor version
|
||||||
|
matching the build. Alternatively it is possible to utilise a
|
||||||
|
=sites.pth= file in the =site-packages/= directory of a viertualenv
|
||||||
|
installation, which links back to the system installations
|
||||||
|
corresponding directory in order to import anything installed system
|
||||||
|
wide. This may or may not be appropriate on a case by case basis.
|
||||||
|
|
||||||
|
Though extensive testing of either of these options is not yet
|
||||||
|
complete, preliminary testing of them indicates that both are viable
|
||||||
|
as long as the main installation is complete. Which means that
|
||||||
|
certain other options normally restricted to virtual environments are
|
||||||
|
also available, including integration with pythonic test suites
|
||||||
|
(e.g. [[https://docs.pytest.org/en/latest/index.html][pytest]]) and other large projects.
|
||||||
|
|
||||||
|
That said, it is worth reiterating the warning regarding non-standard
|
||||||
|
installations. If one were to attempt to install the bindings only to
|
||||||
|
a virtual environment without somehow also including the full GnuPG
|
||||||
|
stack (or enough of it as to include GPGME) then it is highly likely
|
||||||
|
that errors would be encountered at some point and more than a little
|
||||||
|
likely that the build process itself would break.
|
||||||
|
|
||||||
|
If a degree of separation from the main operating system is still
|
||||||
|
required in spite of these warnings, then consider other forms of
|
||||||
|
virtualisation. Either a virtual machine (e.g. [[https://www.virtualbox.org/][VirtualBox]]), a
|
||||||
|
hardware emulation layer (e.g. [[https://www.qemu.org/][QEMU]]) or an application container
|
||||||
|
(e.g. [[https://www.docker.com/why-docker][Docker]]).
|
||||||
|
|
||||||
|
Finally it should be noted that the limited tests conducted thus far
|
||||||
|
have been using the =virtualenv= command in a new directory to create
|
||||||
|
the virtual python environment. As opposed to the standard =python3
|
||||||
|
-m venv= and it is possible that this will make a difference depending
|
||||||
|
on the system and version of Python in use. Another option is to run
|
||||||
|
the command =python3 -m virtualenv /path/to/install/virtual/thingy=
|
||||||
|
instead.
|
||||||
|
|
||||||
|
|
||||||
* Fundamentals
|
* Fundamentals
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: howto-fund-a-mental
|
:CUSTOM_ID: howto-fund-a-mental
|
||||||
|
Loading…
Reference in New Issue
Block a user