<div dir="ltr">Hi John,<div><br></div><div>It is still listed under "experimental" plugins, so you have to enable support for experimental plugins in the plugin manager.</div><div>If you can give feedback if it works for you, this will help to move forward with this concept.</div><div><br></div><div>Kind regards</div><div>Matthias</div></div><div dir="ltr"><div dir="auto"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jan 19, 2024, 18:46 John Lindsay <<a href="mailto:jlindsay@uoguelph.ca" target="_blank">jlindsay@uoguelph.ca</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">




<div dir="ltr">
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;color:rgb(0,0,0)">Hello Matthias,</span></div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;color:rgb(0,0,0)"><br>
</span></div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;color:rgb(0,0,0)">This is very interesting and I'll certainly take a closer look at it as an option. Do you know if the plugin is stable yet? I can
 find it listed in the online QGIS plugin repository, but not yet from the search inside QGIS itself. Thanks.</span></div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;color:rgb(0,0,0)"><br>
</span></div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;color:rgb(0,0,0)">Regards,</span></div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;color:rgb(0,0,0)"><br>
</span></div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;color:rgb(0,0,0)">John</span></div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div id="m_3370792625957808722m_6746741169939758237m_4725227492971374019Signature">
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div id="m_3370792625957808722m_6746741169939758237m_4725227492971374019divtagdefaultwrapper" dir="ltr" style="font-size:12pt;font-family:Calibri,Arial,Helvetica,sans-serif;color:rgb(0,0,0);background-color:rgb(255,255,255)">
<p style="margin-top:0px;margin-bottom:0px">Prof. John Lindsay</p>
<p style="margin-top:0px;margin-bottom:0px;font-family:Calibri,Arial,Helvetica,sans-serif">
<span style="font-size:12pt;color:rgb(0,0,0)">Dept. of Geography, Environment & Geomatics,</span></p>
<p style="margin-top:0px;margin-bottom:0px;font-family:Calibri,Arial,Helvetica,sans-serif">
The University of Guelph,</p>
<p style="margin-top:0px;margin-bottom:0px;font-family:Calibri,Arial,Helvetica,sans-serif">
Room 122, Hutt Building,</p>
<p style="margin-top:0px;margin-bottom:0px"><span style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">E-mail: <a href="mailto:jlindsay@uoguelph.ca" rel="noreferrer" target="_blank">jlindsay@uoguelph.ca</a></span></p>
<p style="margin-top:0px;margin-bottom:0px">Phone: (519) 824-4120 ext. 56074</p>
<p style="margin-top:0px;margin-bottom:0px">Web: <a href="https://geg.uoguelph.ca/faculty/lindsay-john" style="margin-top:0px;margin-bottom:0px" rel="noreferrer" target="_blank">
https://geg.uoguelph.ca/faculty/lindsay-john</a></p>
<p style="margin-top:0px;margin-bottom:0px">Research page: <a href="https://jblindsay.github.io/ghrg/index.html" title="https://jblindsay.github.io/ghrg/index.html" style="margin-top:0px;margin-bottom:0px" rel="noreferrer" target="_blank">
https://jblindsay.github.io/ghrg/index.html</a></p>
<p style="margin-top:0px;margin-bottom:0px"><span style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">WhiteboxTools GIS project:
<a href="https://www.whiteboxgeo.com/" style="margin-top:0px;margin-bottom:0px" rel="noreferrer" target="_blank">
https://www.whiteboxgeo.com/</a></span></p>
<p style="margin-top:0px;margin-bottom:0px"><span style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">Twitter:
<a href="https://twitter.com/whiteboxgeo" style="margin-top:0px;margin-bottom:0px" rel="noreferrer" target="_blank">
https://twitter.com/whiteboxgeo</a></span><br>
</p>
</div>
</div>
<div id="m_3370792625957808722m_6746741169939758237m_4725227492971374019appendonsend"></div>
<hr style="display:inline-block;width:98%">
<div id="m_3370792625957808722m_6746741169939758237m_4725227492971374019divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> QGIS-Developer <<a href="mailto:qgis-developer-bounces@lists.osgeo.org" rel="noreferrer" target="_blank">qgis-developer-bounces@lists.osgeo.org</a>> on behalf of Matthias Kuhn via QGIS-Developer <<a href="mailto:qgis-developer@lists.osgeo.org" rel="noreferrer" target="_blank">qgis-developer@lists.osgeo.org</a>><br>
<b>Sent:</b> Friday, January 19, 2024 12:20 PM<br>
<b>To:</b> Greg Troxel <<a href="mailto:gdt@lexort.com" rel="noreferrer" target="_blank">gdt@lexort.com</a>><br>
<b>Cc:</b> John Lindsay via QGIS-Developer <<a href="mailto:qgis-developer@lists.osgeo.org" rel="noreferrer" target="_blank">qgis-developer@lists.osgeo.org</a>><br>
<b>Subject:</b> Re: [QGIS-Developer] QGIS plugin depends on pypi package</font>
<div> </div>
</div>
<div>
<p></p>
<div style="background-color:rgb(255,235,156);width:100%;border-style:solid;border-color:rgb(156,101,0);border-width:1pt;padding:2pt;font-size:10pt;line-height:12pt;font-family:Calibri;color:black;text-align:left">
<span style="font-weight:bold">CAUTION:</span> This email originated from outside of the University of Guelph. Do not click links or open attachments unless you recognize the sender and know the content is safe. If in doubt, forward suspicious emails to <a href="mailto:IThelp@uoguelph.ca" rel="noreferrer" target="_blank">IThelp@uoguelph.ca</a>.</div>
<br>
<p></p>
<div dir="ltr">Hi John,
<div><br>
</div>
<div>A former colleague of mine developed "qpip".</div>
<div>This is meant as a pip dependency manager for plugins and will install any additional dependencies from a supplied requirements.txt in a controlled way into the user profile folder.</div>
<div><br>
</div>
<div>There has never been any big announcement done regarding this plugin, but it's the best "pip"-like integration into QGIS which I am aware of.</div>
<div><br>
</div>
<div><a href="https://github.com/opengisch/qpip" rel="noreferrer" target="_blank">https://github.com/opengisch/qpip</a><br>
</div>
<div><br>
</div>
<div>Kind regards</div>
<div>Matthias</div>
</div>
<br>
<div>
<div dir="ltr">On Fri, Jan 19, 2024 at 6:13 PM Greg Troxel via QGIS-Developer <<a href="mailto:qgis-developer@lists.osgeo.org" rel="noreferrer" target="_blank">qgis-developer@lists.osgeo.org</a>> wrote:<br>
</div>
<blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
John Lindsay via QGIS-Developer <<a href="mailto:qgis-developer@lists.osgeo.org" rel="noreferrer" target="_blank">qgis-developer@lists.osgeo.org</a>> writes:<br>
<br>
> Besides, a better solution would be for the plugin to install this<br>
> package via pip when it is itself first installed and launched. I<br>
> tried to accomplish this with the following code:<br>
><br>
> <a href="https://github.com/jblindsay/whitebox_workflows_for_qgis/blob/4e463262f6cfd1987afa2f3f7e0e79656eb8d27e/whitebox_workflows_for_qgis_provider.py#L56" rel="noreferrer noreferrer" target="_blank">
https://github.com/jblindsay/whitebox_workflows_for_qgis/blob/4e463262f6cfd1987afa2f3f7e0e79656eb8d27e/whitebox_workflows_for_qgis_provider.py#L56</a><br>
><br>
> This code, which runs whenever the plugin is launched, first checks to<br>
> see if whitebox_workflows can be imported and if not, it runs pip from<br>
> the Python script to install it. Unfortunately, some users have<br>
> reported issues with this not working correctly:<br>
<br>
(Writing from the UNIX perspective.) <br>
<br>
Perhaps biased by my packaing background, I view any code that downloads<br>
other code at runtime (without an explicit user request) as a security<br>
bug.   This is especially true if it isn't getting sources pinned to a<br>
version and validated by checksum.<br>
<br>
That said, there's a lot of interesting questions about how to deal with<br>
dependencies of plugins.   For qgis itself, dependencies are properly<br>
dealt with by a packaging system and that seems ok.<br>
<br>
For plugins, I could see treating them as python modules and packaging<br>
them, but qgis wants to have its own package management system.<br>
<br>
qgis is usually installed, via packaging, globally (/usr or /usr/pkg, or<br>
similar).  The immediate question is where plugins go.  I'd expect them<br>
to be in the user's file area vs system, unless installing them in some<br>
administrator role.  The next question is, if they depend on something,<br>
what prefixes and install methods are expected for those things, both<br>
regular packages (programs and shlibs) and python modules.  Which is<br>
partly/mostly about what the search paths are in the plugin execution<br>
environment.<br>
<br>
Overall, I'd rather see plugins fail with a message and leave<br>
installation as a manual decision than have plugins run pip install.<br>
But I get it that most people probably don't see it that way.<br>
_______________________________________________<br>
QGIS-Developer mailing list<br>
<a href="mailto:QGIS-Developer@lists.osgeo.org" rel="noreferrer" target="_blank">QGIS-Developer@lists.osgeo.org</a><br>
List info: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer noreferrer" target="_blank">
https://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
Unsubscribe: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer noreferrer" target="_blank">
https://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
</blockquote>
</div>
</div>
</div>

</blockquote></div>