Did you export PYTHONPATH? Defining it is not enough, you need to export it (that's a bash construct).
Otherwise, add some printf's here: https://bitbucket.org/blais/beancount/src/tip/beancount/loader.py?fileviewer=file-view-default#loader.py-506 Also, does your module have a __plugins__ attribute? (I'll add a warning about that, I think it's currently a silent failure) On Fri, Dec 29, 2017 at 11:09 AM, Stefano Zacchiroli <[email protected]> wrote: > Heya, > an import issue for a local beancount plugin is driving me crazy. The > plugin is (locally) installed as a python3 module that can be loaded > just fine by any python3 invocation I could imagine, but bean-check > cannot find it. > > ------------------------------------------------------------------------ > Example/walkthrough, with commentary: > > ## bean-check fails loading the module > zack@scaramouche:~/dati/ledger$ bean-check current.beancount > <load>:0: Error importing "mybeancount.public.file_ordering": No > module named 'mybeancount.public.file_ordering' > > ## the module is well declared in the beancount ledger, which is why > ## bean-check tries to load it > zack@scaramouche:~/dati/ledger$ grep -n file_ordering current.beancount > 12:plugin "mybeancount.public.file_ordering" > > ## bean-check is executed as env python3 > zack@scaramouche:~/dati/ledger$ head -n 1 `which bean-check` > #!/usr/bin/env python3 > > ## trying by hand, the plugin loads as a module just fine > zack@scaramouche:~/dati/ledger$ /usr/bin/env python3 > Python 3.6.4 (default, Dec 19 2017, 14:09:48) > [GCC 7.2.0] on linux > Type "help", "copyright", "credits" or "license" for more information. > >>> import mybeancount.public.file_ordering > >>> > > ## trying by hand, take 2, using importlib in exact the same way that > ## the beancount Python library does. Again, works just fine: > zack@scaramouche:~/dati/ledger$ /usr/bin/env python3 > Python 3.6.4 (default, Dec 19 2017, 14:09:48) > [GCC 7.2.0] on linux > Type "help", "copyright", "credits" or "license" for more information. > >>> import importlib > >>> importlib.import_module('mybeancount.public.file_ordering') > <module 'mybeancount.public.file_ordering' from '/home/zack/.local/lib/ > python3.6/site-packages/mybeancount/public/file_ordering.py'> > >>> > ------------------------------------------------------------------------ > > What am I missing here? I've also looked for sys.path fiddling in the > beancount code, but didn't find any that seem relevant here. > > I'm able to reproduce the issue on two different machines (Debian > testing and Debian Stretch), with fresh beancount installations. > > Many thanks in advance for your help, > Cheers > -- > Stefano Zacchiroli . [email protected] . upsilon.cc/zack . . o . . . o . o > Computer Science Professor . CTO Software Heritage . . . . . o . . . o o > Former Debian Project Leader & OSI Board Director . . . o o o . . . o . > « the first rule of tautology club is the first rule of tautology club » > > -- > You received this message because you are subscribed to the Google Groups > "Beancount" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/beancount/20171229160941.GC16638%40upsilon.cc. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAK21%2BhOMJw-TN73PPKqm2SiLLKGdy2y57A%3DhmmBMFSF56wA7tw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
