[GNC-dev] Fwd: Testing python

Andy Goblins andygoblins at gmx.com
Mon Apr 20 23:15:53 EDT 2020


   My environment seems much the same as yours. But for some reason, it
   can't find the gncmod-backend-* files, which are compiled into the
   build/lib/gnucash directory:

   Python 3.8.2 (default, Apr  8 2020, 14:31:25)
   [GCC 9.3.0] on linux
   Type "help", "copyright", "credits" or "license" for more information.
   >>> import sys
   >>> print(sys.path)
   ['', '/usr/lib/python38.zip', '/usr/lib/python3.8',
   '/usr/lib/python3.8/lib-dynload',
   '/home/andy/hack/gnucash/build/lib/python3.8/site-packages',
   '/home/andy/.local/lib/python3.8/site-packages',
   '/usr/lib/python3.8/site-packages']
   >>> import gnucash
   * 22:04:55  WARN <gnc.engine> failed to load gncmod-backend-dbi from
   relative path
   * 22:04:55 ERROR <gnc.engine> required library gncmod-backend-dbi not
   found.
   * 22:04:55  WARN <gnc.engine> failed to load gncmod-backend-xml from
   relative path
   * 22:04:55 ERROR <gnc.engine> required library gncmod-backend-xml not
   found.
   >>> import gnucash.gnucash_core_c
   >>> print(gnucash.gnucash_core_c.CREC)
   c
   >>> exit()
   (build) ~/hack/gnucash/build > ls -a lib/python3.8/site-packages
   total 40
   drwxr-xr-x 9 andy andy 4096 Apr 16 18:06 .
   drwxr-xr-x 3 andy andy 4096 Apr 16 17:46 ..
   -rw-r--r-- 1 andy andy  126 Apr 16 18:06 easy_install.py
   drwxr-xr-x 3 andy andy 4096 Apr 16 18:00 gnucash
   drwxr-xr-x 5 andy andy 4096 Apr 16 18:06 pip
   drwxr-xr-x 2 andy andy 4096 Apr 16 18:06 pip-19.2.3.dist-info
   drwxr-xr-x 5 andy andy 4096 Apr 16 18:06 pkg_resources
   drwxr-xr-x 2 andy andy 4096 Apr 16 18:06 __pycache__
   drwxr-xr-x 6 andy andy 4096 Apr 16 18:06 setuptools
   drwxr-xr-x 2 andy andy 4096 Apr 16 18:06 setuptools-41.2.0.dist-info
   (build) ~/hack/gnucash/build > ls -a
   lib/python3.8/site-packages/gnucash
   total 2556
   drwxr-xr-x 3 andy andy    4096 Apr 16 18:00 .
   drwxr-xr-x 9 andy andy    4096 Apr 16 18:06 ..
   -rw-r--r-- 1 andy andy     552 Apr 16 18:00 app_utils.py
   -rw-r--r-- 1 andy andy    9286 Apr 16 18:00 function_class.py
   -rw-r--r-- 1 andy andy   14460 Apr 16 18:00 gnucash_business.py
   -rw-r--r-- 1 andy andy  272455 Apr 16 18:00 gnucash_core_c.py
   -rwxr-xr-x 1 andy andy 1872240 Apr 16 18:00 _gnucash_core_c.so
   -rw-r--r-- 1 andy andy   33878 Apr 16 18:00 gnucash_core.py
   -rw-r--r-- 1 andy andy     443 Apr 16 18:00 __init__.py
   drwxr-xr-x 2 andy andy    4096 Apr 16 18:00 __pycache__
   -rw-r--r-- 1 andy andy    3772 Apr 16 17:58 sw_app_utils.py
   -rwxr-xr-x 1 andy andy  163488 Apr 16 17:58 _sw_app_utils.so
   -rw-r--r-- 1 andy andy   14200 Apr 16 17:59 sw_core_utils.py
   -rwxr-xr-x 1 andy andy  196176 Apr 16 17:59 _sw_core_utils.so

   Sent: Sunday, April 19, 2020 at 10:43 AM
   From: "Mark" <epistemik at gmail.com>
   To: "gnucash-devel" <gnucash-devel at gnucash.org>
   Subject: [GNC-dev] Fwd: Testing python
   Forgot to reply all...
   *Mark*
   *epistemik at gmail.com <epistemik at gmail.com>*
   *(613) 447-5385*
   ---------- Forwarded message ---------
   From: Mark <epistemik at gmail.com>
   Date: Sun, Apr 19, 2020 at 11:42 AM
   Subject: Re: [GNC-dev] Testing python
   To: Andy Goblins <andygoblins at gmx.com>
   From a terminal with your venv activated, can you show the actual
   output
   you get from a test like so:
   (venv39) /newdata/dev/git/Python/VENV/venv39 | Sun Apr 19 11:16:23 |
   marksa at Ares-A717-72G | bash 4.4.20
   2038 > python
   Python 3.9.0a5+ (heads/master-dirty:3e0dd3730b, Apr 12 2020, 06:54:39)
   [GCC 7.5.0] on linux
   Type "help", "copyright", "credits" or "license" for more information.
   >>> import sys
   >>> print(sys.path)
   ['', '/usr/local/lib/python39.zip', '/usr/local/lib/python3.9',
   '/usr/local/lib/python3.9/lib-dynload',
   '/newdata/dev/Python/VENV/venv39/lib/python3.9/site-packages',
   '/home/marksa/.local/lib/python3.9/site-packages',
   '/usr/local/lib/python3.9/site-packages']
   >>> import gnucash
   >>> import gnucash.gnucash_core_c
   >>> print(gnucash.gnucash_core_c.CREC)
   c
   >>> exit()
   This is the simple test I run to make sure I have properly set up a new
   venv for running the gnucash python bindings. I presume you are getting
   the
   error messages as soon as you try to 'import gnucash'? As far as I can
   tell, as long as you have the properly built bindings in one of the
   site-packages or other directories in your sys.path, you should be able
   to
   run ok. So my venv 'lib/python3.9/site-packages' looks like this:
   (venv39) /newdata/dev/git/Python/VENV/venv39 | Sun Apr 19 11:04:19 |
   marksa at Ares-A717-72G | bash 4.4.20
   2010 > go lib/python3.9/site-packages/
   total 12
   drwxrwxr-x 2 marksa marksa 4096 Apr 15 09:12 PyQt5-stubs
   drwxrwxr-x 2 marksa marksa 4096 Apr 15 09:12
   PyQt5_stubs-5.14.2.0.dist-info
   drwxrwxr-x 3 marksa marksa 4096 Apr 12 08:59 gnucash
   (venv39)
   /newdata/dev/git/Python/VENV/venv39/lib/python3.9/site-packages |
   Sun Apr 19 11:04:27 | marksa at Ares-A717-72G | bash 4.4.20
   2011 > go gnucash/
   total 14344
   drwxrwxr-x 2 marksa marksa 4096 Apr 14 22:21 __pycache__
   -rw-r--r-- 1 root root 5588952 Apr 12 08:59 _gnucash_core_c.so
   -rw-r--r-- 1 root root 4345088 Apr 12 08:59 _sw_app_utils.so
   -rw-r--r-- 1 root root 4364912 Apr 12 08:59 _sw_core_utils.so
   -rw-r--r-- 1 root root 276305 Apr 12 08:58 gnucash_core_c.py
   -rw-r--r-- 1 root root 552 Apr 11 12:28 app_utils.py
   -rw-r--r-- 1 root root 9286 Apr 11 12:28 function_class.py
   -rw-r--r-- 1 root root 33315 Apr 11 12:28 gnucash_core.py
   -rw-r--r-- 1 root root 14460 Mar 29 14:50 gnucash_business.py
   -rw-rw-r-- 1 marksa marksa 17808 Jan 12 16:57 sw_core_utils.py
   -rw-rw-r-- 1 marksa marksa 4870 Jan 12 16:57 sw_app_utils.py
   -rw-r--r-- 1 root root 443 Sep 14 2019 __init__.py
   For me it doesn't look like you need an actual gnucash app installed in
   the
   venv to run the python bindings. But that I'm not sure about. If
   everything
   you have looks good and you are still getting the error messages then
   you
   may need some advice from someone who knows more about the way the
   bindings
   are actually accessing system libraries.
   cheers,
   *Mark*
   *epistemik at gmail.com <epistemik at gmail.com>*
   *(613) 447-5385*
   On Sun, Apr 19, 2020 at 10:18 AM Andy Goblins <andygoblins at gmx.com>
   wrote:
   > Since my python virtual environment is installed in the base of my
   build
   > directory, I assume it naturally has access to build/lib/gnucash and
   > build/lib/python3.8/site-packages. This appears to be working
   partially; it
   > picks up the altered gnucash library in build/lib/python3.8 but it
   isn't
   > getting the C libraries in build/lib/gnucash.
   >
   > I also tried skipping the virtual environment and just running
   > "GNC_UNINSTALLED=1;GNC_BUILDDIR=<my build
   >
   dir>;PYTHONPATH=$GNC_BUILDDIR/lib/python3.8/site-packages:$GNC_BUILDDIR
   /lib/gnucash
   > python" just like the cmake tests use, but I get the same result;
   it's not
   > finding the libgncmod-backend stuff in build/lib/gnucash.
   >
   > *Sent:* Saturday, April 18, 2020 at 12:47 PM
   > *From:* "Mark" <epistemik at gmail.com>
   > *To:* "andygoblins" <andygoblins at gmx.com>
   > *Cc:* "GnuCash Developer" <gnucash-devel at gnucash.org>
   > *Subject:* Re: [GNC-dev] Testing python
   > I use the python bindings regularly but I've never got any warnings
   or
   > errors such as you describe. Just to cover the basics first, are you
   sure
   > you didn't want to issue the venv command with the
   '--system-site-packages'
   > switch? Did you have pygnucash loaded to the pip of the python you
   used for
   > venv? Or instead did you make sure that in your venv you have
   included the
   > path to your tinkered bindings in your PYTHONPATH? And you activated
   the
   > venv before using? Sorry if this is all basic stuff you already know
   about.
   >
   >
   >
   >
   > *Mark*
   > *epistemik at gmail.com <epistemik at gmail.com>*
   > *(613) 447-5385*
   >
   >
   >
   > On Sat, Apr 18, 2020 at 10:08 AM andygoblins <andygoblins at gmx.com>
   wrote:
   >
   >> I'm tinkering with the python bindings, but I'm having trouble
   testing
   >> the results of my changes. Could anyone give me some advice?
   >> Currently, I build gnucash with ninja and then run 'python -m venv
   >> <build dir>' to set up a virtual python environment right next to
   the
   >> fresh build. But when I try to import gnucash in the virtual
   >> environment, it doesn't load any of the backends:
   >> WARN <gnc.engine> failed to load gncmod-backend-dbi from relative
   path
   >> ERROR <gnc.engine> required library gncmod-backend-dbi not found.
   >> WARN <gnc.engine> failed to load gncmod-backend-xml from relative
   path
   >> ERROR <gnc.engine> required library gncmod-backend-xml not found.
   >> Any ideas on how to fix my path so I can load backends in my test
   >> environment?
   >> _______________________________________________
   >> gnucash-devel mailing list
   >> gnucash-devel at gnucash.org
   >> [1]https://lists.gnucash.org/mailman/listinfo/gnucash-devel
   >
   >
   _______________________________________________
   gnucash-devel mailing list
   gnucash-devel at gnucash.org
   [2]https://lists.gnucash.org/mailman/listinfo/gnucash-devel

References

   1. https://lists.gnucash.org/mailman/listinfo/gnucash-devel
   2. https://lists.gnucash.org/mailman/listinfo/gnucash-devel


More information about the gnucash-devel mailing list