Hi, any ideas on how I can get the Python extensions working? I can’t get very far with writing one until I can test it…
Essentially, on all versions of the program I try, a script added manually to ~/.local/share/OpenChemistry/Avogadro/commands/<script_name>/<script.py> along with a plugin.json fails to load and doesn’t change anything in the program, even when the script is one of yours. Meanwhile, other Python-related functionality is very variable in what works and what doesn’t.
With the nightly AppImage I observe:
47 extensions reported found
Input menu is fully populated and menu items open dialog windows seemingly correctly
Download plugins window is empty other than the frames, table headings, and Download selected button
Any extension scripts that are found are not loaded, with lines such as "Cannot load script /tmp/.mount_AvogadNf9qIX/usr/lib/avogadro2/scripts/energy/mmff94.py" printed to the terminal
This includes scripts manually downloaded and placed in ~/.local/share/OpenChemistry/Avogadro/commands/avogadro-scikit-nano, such as avogadro-scikit-nano that would ordinarily be in Download plugins
As a result of the above, Extensions | Calculate | Configure... only offers LJ as an option
I also get – and I only see this with the AppImage – this error:
While the AppImage is convenient, it’s clear that some aspects either run in some sort of sandbox or are otherwise different than a regular Linux environment. Since I don’t have a Linux machine handy, it’s a bit hard to debug.
In particular, I think you need to add some permission to get network access (eg. the download plugin feature)
Any extension scripts that are found are not loaded, with lines such as "Cannot load script /tmp/.mount_AvogadNf9qIX/usr/lib/avogadro2/scripts/energy/mmff94.py"printed to the terminal
I think the question is whether the AppImage has access to a Python with openbabel installed (probably not).
This includes scripts manually downloaded and placed in ~/.local/share/OpenChemistry/Avogadro/commands/
Similarly, if the AppImage can’t access a Python environment with scikit-nano, it’s not going to work.
Qt 5
I’m going to skip Qt6 – I think not all of the features have been ported to Qt6 because of changes to some of the classes (e.g., regular expressions). That clearly includes many of the Python features.
This is where I’d start. What do you mean by “lots of failed to load” … are these scripts that you have installed the relevant Python package? Have you set the Python path for this build?
Based on your output, it seems like:
you haven’t installed scikit-nano so that doesn’t load
you haven’t installed xtb-python so GFN-FF, etc. don’t load
you haven’t installed requirements for nanocar (which includes ase among other things)
you don’t have antechamber in your path, so that charge script doesn’t load
I’d have to see how you’re handling avo_xtb/test.py. Generally, Avogadro is just running:
python avo_xtb/test.py --display-name # make sure the script works
OK with regards to this it seems like it’s a known issue and the problem was that the AppImage was built against OpenSSL 1.1, while I only had 3.1 installed. This results in QSsl not working, as OpenSSL is not bundled with AppImages, see here. I opened this GitHub issue with more details.
After installing OpenSSL 1.1 from the OpenSUSE repos the plugin installer works perfectly in the AppImage.
Ah thanks for your pointers, I hadn’t realized that by coincidence, all the extensions I installed had external dependencies. I found one or two that don’t have any and they indeed work fine!
By running your example Python command by hand I discovered that I simply had a syntax error in my script, oops. Very sorry to take up your time over a dumb error…
Would it be possible to have Avogadro print the Python stdout as well? This would in general help with debugging, and would make clear why any Python processes fail.
Yes, I need to finish up some support for installing dependencies.
Set AVO_PYTHON_SCRIPT_DEBUG in the environment. I’m pretty sure that’s in the script documentation, but maybe it needs to be more prominent.
For commands and generators, I’ll polish up some scripts to help debugging / testing. Basically, they query for options and then feed defaults back when running the script normally.