[QGIS-Developer] Plugin dependency with binaries: 'best' way to guide user to install?
Aron Gergely
aron.gergely at rasterra.nl
Wed Apr 6 06:55:55 PDT 2022
@Andrea
Thank you - I posted my case to that issue.
@Benjamin
Thanks, wow this looks comprehensive.
I thought of that shutil way but dismissed it, I'd have to try then for
'python', 'python3'. And it would not work in case
user set up a shell alias (say, python3.9) for the python executable in
their env.
Although in that case they probably know how to install packages themselves.
I see shutil tries for the python command here:
https://bitbucket.org/hu-geomatics/enmap-box/src/966a75ffbe903775c03f54e5dc0e663dfb98b2de/enmapbox/dependencycheck.py#lines-166:178
Did this give you any trouble when you rolled it out to the users?
Best regards,
Aron
On 06-04-2022 15:17, Benjamin Jakimow wrote:
>
> Hi Aron,
>
> with the EnMAP-Box plugin we are confronted with missing PIP packages
> quite often. Therefore we implemented a "PIP Package Installer"
> (screenshot below, source code here:
> https://bitbucket.org/hu-geomatics/enmap-box/src/develop/enmapbox/dependencycheck.py)
>
> In case of missing admin rights you can use the PIP "--user" argument
> to install packages to the user's home folder
>
> D:\OSGeo4W\bin\python3.EXE -m pip install --user lightgbm
>
> The absolute python executable path can be retrieved with
> "shutil.which('python') "
>
>
>
> Greetings,
>
> Benjamin
>
> On 2022-04-06 14:01, Aron Gergely via QGIS-Developer wrote:
>
>> @Pedro:
>> Tried it today on Windows w OSGeo QGIS and failed right away. But in
>> a different way:
>>
>> If I launch OSGeo QGIS and ask for the python executable's path
>> (sys.executabe), I get 'C:/OSGeo4W/bin/qgis-bin.exe'. which looks
>> like entry point is for QGIS. So subprocess calls that and a new
>> QGIS window opens.
>>
>> Not feeling like tackling this and probably other cases.
>> So back to download+including those bins I reckon.
>>
>> @Johannes:
>> Thank you. Yes realizing that now..
>>
>>
>> Cheers,
>> Aron
>>
>>
>>
>> On 06-04-2022 12:12, Johannes Kröger (WhereGroup) wrote:
>>>
>>> Trying to find a smart way to install Python dependencies for the
>>> users that will not potentially not work or even break stuff is a
>>> very hard thing(tm). Check out these two QEPs for a lot of
>>> discussion and possible approaches:
>>>
>>> https://github.com/qgis/QGIS-Enhancement-Proposals/issues/202
>>> <https://github.com/qgis/QGIS-Enhancement-Proposals/issues/202>
>>> https://github.com/qgis/QGIS-Enhancement-Proposals/issues/179
>>> <https://github.com/qgis/QGIS-Enhancement-Proposals/issues/179>
>>>
>>> Cheers, Hannes
>>>
>>> Am 06.04.22 um 00:10 schrieb Pedro Camargo via QGIS-Developer:
>>>> Hey Aron,
>>>> I did explore that route, but I found out that
>>>> it would fail when the user did not have administrator rights (or
>>>> even if QGIS had not been ran as administrator on Windows). Did
>>>> you find it to be different?
>>>> Cheers,
>>>> Pedro
>>>> ---- On Wed, 06 Apr 2022 03:28:09 +1000 *Aron Gergely
>>>> <aron.gergely at rasterra.nl> <mailto:aron.gergely at rasterra.nl>* wrote
>>>> ----
>>>>
>>>> Thank you, I checked out your plugin - yes that seems also a
>>>> good way.
>>>> I already had the logic to detect, throw message, guide to
>>>> dialog, etc... implemented similar to yours.
>>>>
>>>> But I wanted to let pip manage the actual package, so I went
>>>> with the subprocess+pip route. Here is a minimum working example:
>>>>
>>>> import subprocess
>>>> import sys
>>>>
>>>>
>>>> try:
>>>> subprocess.check_call((sys.executable, '-m', 'pip', 'install', 'h3<=3.99'))
>>>> except subprocess.CalledProcessErroras e:
>>>> raise e# handle any errors here instead
>>>>
>>>> I connected it to a button in a dialog. And catch stdout,
>>>> stderr and the exit code of the subprocess so I can show the
>>>> user what is happening.
>>>>
>>>> Have not yet tried on other platforms than Linux. But
>>>> sys.executable is there to solve the ambiguity of python
>>>> executable path.
>>>>
>>>>
>>>> Best regards,
>>>> Aron
>>>>
>>>>
>>> --
>>> Johannes Kröger / GIS-Entwickler/-Berater
>>>
>>> ---------------------------------------------
>>> Schon gewusst?
>>> In unserem Blog geben wir Tipps & Tricks zu Open-Source-GIS-Software
>>> und berichten aus unserem Experten-Alltag:
>>> https://wheregroup.com/blog/ <https://wheregroup.com/blog/>
>>> ---------------------------------------------
>>>
>>> WhereGroup GmbH
>>> Grevenweg 89
>>> 20537 Hamburg
>>> Germany
>>>
>>> Tel: +49 (0)228 / 90 90 38 - 36
>>> Fax: +49 (0)228 / 90 90 38 - 11
>>>
>>> johannes.kroeger at wheregroup.com <mailto:johannes.kroeger at wheregroup.com>
>>> www.wheregroup.com <http://www.wheregroup.com>
>>> Geschäftsführer:
>>> Olaf Knopp, Peter Stamm
>>> Amtsgericht Bonn, HRB 9885
>>> -------------------------------
>> --
>> Kind Regards,
>>
>> Aron Gergely
>> +31 (0) 6 38 70 97 66
>>
>> *Rasterra* | www.rasterra.nl <http://www.rasterra.nl>
>>
>> _______________________________________________
>> QGIS-Developer mailing list
>> QGIS-Developer at lists.osgeo.org
>> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>
>
> --
> --
> Benjamin Jakimow, Doctoral Researcher
> Earth Observation Lab | Geography Department | Humboldt-Universität zu
> Berlin
>
> e-mail: benjamin.jakimow at geo.hu-berlin.de
>
> phone: +49 (0) 30 2093 6894
> mobile: +49 (0) 157 5656 8477
> fax: +49 (0) 30 2093 6848
> mail: Unter den Linden 6 | 10099 Berlin | Germany
> room: 2'222
--
Email Signature Kind Regards,
Aron Gergely
+31 (0) 6 38 70 97 66
*Rasterra* | www.rasterra.nl
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20220406/6baa75ca/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 51d6a740.png
Type: image/png
Size: 56151 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20220406/6baa75ca/attachment-0001.png>
More information about the QGIS-Developer
mailing list