PyQGisCookbook--插件开发环境设置(十八/4)


插件开发的IDE设置

尽管每个程序员都有自己喜欢的IDE /文本编辑器,但是这里有一些建议,可以设置流行的IDE来编写和调试QGIS Python插件。

编写Python插件的有用插件

一些插件在编写Python插件时很方便。在插件‣管理和安装插件…中,安装:

  • 插件重新加载器(Plugin reloader):这将使您可以重新加载插件并提取新更改,而无需重新启动QGIS。

  • 急救(First Aid):当插件引发异常时,将添加Python控制台和本地调试器以检查变量。

 

在Linux和Windows上配置IDE的说明

在Linux上,通常需要做的就是将QGIS动态库位置添加到用户的PYTHONPATH环境变量中。在大多数发行版中,可以通过编辑~/.bashrc~/.bash-profile的以下行(在OpenSUSE Tumbleweed上进行测试)来完成:

export PYTHONPATH="$PYTHONPATH:/usr/share/qgis/python/plugins:/usr/share/qgis/python"

使用以下shell命令保存文件并实现环境设置:

source ~/.bashrc

在Windows上,需要确保您具有与QGIS相同的环境设置,并使用相同的库和解释器。最快的方法是修改QGIS的批处理启动文件。

如果您使用了OSGeo4W安装程序,则可以在binOSGeo4W安装目录下找到它。寻找类似的东西 C:\OSGeo4W\bin\qgis-unstable.bat

使用Pyscripter IDE进行调试(Windows)

要使用Pyscripter IDE,您需要执行以下操作:

  1. 制作一个副本qgis-unstable.bat并重命名pyscripter.bat

  2. 在编辑器中打开它。并删除最后一行,即启动QGIS的那一行。

  3. 添加指向您的Pyscripter可执行文件的行,并添加设置要使用的Python版本的命令行参数

  4. 还要添加指向Pyscripter可以找到QGIS使用的Python dll的文件夹的参数,您可以在OSGeoW安装的bin文件夹下找到该参数。

    @echo off
    SET OSGEO4W_ROOT=C:\OSGeo4W
    call "%OSGEO4W_ROOT%"\bin\o4w_env.bat
    call "%OSGEO4W_ROOT%"\bin\gdal16.bat
    @echo off
    path %PATH%;%GISBASE%\bin
    Start C:\pyscripter\pyscripter.exe --python25 --pythondllpath=C:\OSGeo4W\bin
    
  5. 现在,当您双击该批处理文件时,它将以正确的路径启动Pyscripter。

Eclipse比Pyscripter流行,是开发人员的常见选择。在下一节中,我们将说明如何配置它以开发和测试插件。

使用Eclipse和PyDev进行调试

安装

要使用Eclipse,请确保已安装以下内容

  • Eclipse

  • Aptana Studio 3插件PyDev

  • QGIS 2.x

  • 您可能还需要安装QGIS插件Remote Debug。目前仍处于试验阶段,因此请 在“ 插件”‣“管理和安装插件...”‣“选项”复选框启用“ 实验插件” 。

为了准备在Windows中使用Eclipse的环境,您还应该创建一个批处理文件并将其用于启动Eclipse:

  1. 找到qgis_core.dll所在的文件夹。通常是 C:\OSGeo4W\apps\qgis\bin,但是如果您编译自己的QGIS应用程序,则在的build文件夹中。output/bin/RelWithDebInfo

  2. 找到您的eclipse.exe可执行文件。

  3. 创建以下脚本,并在开发QGIS插件时使用它启动Eclipse。

    call "C:\OSGeo4W\bin\o4w_env.bat"
    set PATH=%PATH%;C:\path\to\your\qgis_core.dll\parent\folder
    C:\path\to\your\eclipse.exe
    

设置

  1. 在Eclipse中,创建一个新项目。您可以选择“ 常规项目”并在以后链接您的真实资源,因此放置此项目的位置并不重要。

    ../../../_images/eclipsenewproject.png

    Eclipse项目

  2. 右键单击您的新项目,然后选择新建文件夹

  3. 单击高级,然后选择链接到备用位置(链接文件夹)。如果您已经有要调试的代码,请选择这些代码。如果您不这样做,请按照已经说明的方法创建一个文件夹。

现在,在Project Explorer视图中,您的代码树弹出,您可以开始调试代码。您已经拥有语法高亮显示和所有其他强大的IDE工具。

配置调试

要使调试器正常工作:

  1. 在Eclipse中切换到“调试”透视图(“ 窗口‣打开透视图‣其他‣调试”)。

  2. 通过选择PyDev‣启动调试服务器来启动PyDev调试服务器。

  3. Eclipse现在正在等待从QGIS到其调试服务器的连接,当QGIS连接到调试服务器时,它将允许它控制python脚本。这正是我们安装Remote Debug插件的目的。因此,如果尚未启动QGIS,请单击它,然后单击调试符号。

现在,您可以设置一个断点,一旦代码执行到断点就会停止,您可以检查插件的当前状态。(断点是下图中的绿点,通过双击行左侧的空白处来设置一个断点)。

断点

您现在可以使用的一个非常有趣的东西是调试控制台。在继续操作之前,请确保执行当前已在断点处停止。

  1. 打开控制台视图(窗口‣显示视图),它将显示Debug Server控制台,这不是很有用。但是有一个“ 打开控制台”按钮,可让您更改为更有用的PyDev调试控制台。

  2. 单击“ 打开控制台”按钮旁边的箭头,然后选择“ PyDev控制台”,将打开一个窗口,询问您要启动哪个控制台。

  3. 选择PyDev调试控制台。如果它变灰并告诉您启动调试器并选择有效的框架,请确保已连接了远程调试器并且当前处于断点。

    ../../../_images/console-buttons.png

    PyDev调试控制台

现在,您有了一个交互式控制台,该控制台可让您从当前上下文中测试任何命令。您可以操纵变量或进行API调用或任何您喜欢的操作。

小费

注意:有点烦人的是,每次输入命令时,控制台都会切换回Debug Server。若要停止此行为,您可以在“调试服务器”页面上单击“ Pin Console”按钮,并且它至少应该可以在当前调试会话中记住此决定。

配置Eclipse知道QGIS API

让Eclipse实际上了解QGIS API是一个非常方便的功能。这使它可以检查您的代码是否有错误,还使Eclipse能够帮助您完成自动补全导入API的调用。

为此,Eclipse解析了QGIS库文件并从那里获取所有信息。唯一要做的就是告诉Eclipse在哪里可以找到这些库。

  1. 单击窗口‣首选项‣PyDev‣解释器‣Python

    您将在窗口的上部看到配置的python解释器(对于QGIS,目前是python2.7),在下部显示一些选项卡。对我们来说有趣的选项卡是Libraries(库)Forced Builtins(强制内置)

    interpreter-libraries.png

    PyDev调试控制台

  2. 首先打开“Libraries”选项卡。

  3. 添加一个新建文件夹,然后选择QGIS安装的python文件夹。如果您不知道此文件夹在哪里(不是plugins文件夹):

    1. 启动QGIS

    2. 打开python控制台

    3. 输入 qgis

    4. 然后按Enter,它将向您显示其使用哪个QGIS模块及其路径。

    5. /qgis/__init__.pyc从该路径中删除尾随,就可以找到所需的路径。

  4. 您还应该在此处添加您的plugins文件夹(python/plugins 位于用户配置文件文件夹下)。

  5. 接下来跳转到“ Forced Builtins”选项卡,单击“ New…”并输入qgis。这将使Eclipse解析QGIS API。您可能还希望Eclipse了解PyQt4 API。因此,还应将PyQt4添加为强制内置。这可能已经存在于“库”选项卡中。

  6. 单击确定,完成。

注意

每次QGIS API更改时(例如,如果您正在编译QGIS master且SIP文件已更改),则应返回此页面,只需单击 Apply。这将使Eclipse再次解析所有库。

在Ubuntu上使用PyCharm进行调试已编译的QGIS

PyCharm是JetBrains开发的Python IDE。有一个免费版本叫做Community Edition,一个付费版本叫做Professional。您可以在以下网站上下载PyCharm:https//www.jetbrains.com/pycharm/download

我们假设您已经在Ubuntu上使用给定的build目录编译了QGIS ~/dev/qgis/build/master。拥有自编译的QGIS并不是强制性的,但只有此功能已经过测试。必须调整路径。

  1. Project Properties, Project Interpreter,我们将创建一个名为QGIS的Python虚拟环境。

  2. 单击小齿轮,然后单击Add

  3. 选择Virtualenv environment

  4. 选择所有Python项目的通用位置,例如, ~/dev/qgis/venv因为我们将对所有插件使用此Python解释器。

  5. 选择系统上可用的Python 3.x 解释器,然后检查以下两个选项Inherit global site-packages 和 Make available to all projects

../../../_images/pycharm-add-venv.png
  1. 单击“ 确定”,返回小齿轮,然后单击“ 显示全部”

  2. 在新窗口中,选择新的QGIS解释器,然后单击垂直菜单中的最后一个图标Show paths for the selected interpreter

  3. 最后,将以下绝对路径添加到列表 ~/dev/qgis/build/master/output/python

../../../_images/pycharm-adding-path.png
  1. 重新启动PyCharm,所有插件使用此新的Python虚拟环境。

如果您使用QGIS提供的Qt(例如from qgis.PyQt.QtCore import QDir),PyCharm将了解QGIS API以及PyQt API 。自动补全应该可以工作,PyCharm可以检查您的代码。

在专业版的PyCharm中,远程调试可以使用,对于社区版,远程调试不可用。您只能访问本地调试器,这意味着代码必须 PyCharm 内部运行(作为脚本或单元测试),而不能在QGIS本身中运行。对于 QGIS中运行的Python代码,您可以使用上面提到的First aid(急救)插件。

使用PDB进行调试

如果不使用Eclipse或PyCharm之类的IDE,则可以按照以下步骤使用PDB进行调试。

  1. 首先将此代码添加到您要调试的位置

    # Use pdb for debugging
    import pdb
    # also import pyqtRemoveInputHook
    from qgis.PyQt.QtCore import pyqtRemoveInputHook
    # These lines allow you to set a breakpoint in the app
    pyqtRemoveInputHook()
    pdb.set_trace()
    
  2. 然后从命令行运行QGIS。

    在Linux上,请执行以下操作:

    $ ./Qgis
    

    在macOS上执行以下操作:

    $ /Applications/Qgis.app/Contents/MacOS/Qgis
    
  3. 当应用程序达到断点时,您可以在控制台打印相关信息!

TODO:

添加测试信息


©版权所有2002-现在,QGIS项目 最近更新于2020年4月3日09:14。

使用Sphinx使用Read the Docs提供的主题构建。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值