开发依赖于外部Python库的插件
我正在开发一个Python插件,目标是将称为“海拔”的PyPI Python库的功能集成到QGIS中。 有没有一种独立于操作系统的方式来安装外部Python库并使它们可用于Python插件? 我已经知道用于安装外部Python依赖项的不同系统特定过程,我想做的就是在不同环境中分布我的插件而不会让人发疯。 我已经知道的 搜索网络和其他类似问题,似乎没有独立于操作系统的解决方案。 Windows用户 Python打包并分发在QGIS软件包中,因此,要安装外部Python库,您必须先经过OSGeo4W Shell,然后从那里使用pip。 相关链接: QGIS独立版和Python模块 将Python setuptools安装到OSGeo4W Python中 如何在Windows上为QGIS安装第三方python库? OS X用户 在这种情况下,QGIS使用内置的Python,它预先包装在OS X内,位于: /usr/bin/python 这里的问题是,默认安装的pip有一些限制,并且需要太多特权。 一种快速的解决方法是使用自制软件安装Python,以便您的pip可以在用户可修改的Python框架上运行。在这里查看此方法的详细信息。 通过pip安装所有Python库之后,只需要将其目录添加到PATH变量中。 OS X用户的另一种方法 在插件Python代码内部,您可以使用系统提供的pip来安装所需的软件包。然后,您可以使刚刚安装的软件包可访问,并将其添加到路径中。 import sys import pip pip.main(['install','--target=/Devel/test', 'elevation']) sys.path.append("/Devel/test") 自制但可行的解决方案(在Linux和OS X上均经过测试) 我决定采用替代方法,因为它允许将库的更新和维护与插件分开。每次新用户安装插件时,pip都会直接下载并安装最新版本的海拔库。 self.plugin_dir = os.path.dirname(__file__) self.elevation_dir = os.path.join(self.plugin_dir, 'elevation') # Checking the presence of elevation library …