Eclipse中调试Python代码

Gdal_retile.py是用于对遥感影像创建金字塔,近期本人想读懂改程序中的代码。读懂代码的较好方式就是单步调试,但是由于之前没有学过Python语言,不但对语言不熟悉,对其开发环境也一无所知。没想到第一次接触就遇到了难题,搞了将近两天才把调试环境配置成功。我在解决这个问题的时候也曾在网上搜索解决办法,但是几乎没有什么有价值的信息,因此决定将经验分享出来供大家参考。

FWTools2.4.7安装成功后,在开始菜单中运行FWTools Shell会弹出Dos窗口,在其中可以执行gdal_retile命令,该命令其实执行的是gdal_retile.bat,该bat文件转调gdal_retile.py。你会发现,如果你不是用FWTools Shell弹出的Dos窗口执行命令,而是单独打开Dos窗口,在该窗口中执行gdal_retile.bat会失败,这是因为FWTools Shell在打开Dos窗口之前设置6个重要的环境变量,它们分别是:

---------

PATH=C:/PROGRA~1/FWTOOL~1.7/bin;C:/PROGRA~1/FWTOOL~1.7/python;

set PYTHONPATH=C:/PROGRA~1/FWTOOL~1.7/pymod

set FWTOOLS_DIR=C:/PROGRA~1/FWTOOL~1.7

set GDAL_DATA=C:/PROGRA~1/FWTOOL~1.7/data

set GDAL_DRIVER_PATH=C:/PROGRA~1/FWTOOL~1.7/gdal_plugins

set GEOTIFF_CSV=C:/PROGRA~1/FWTOOL~1.7/data

set PROJ_LIB=C:/PROGRA~1/FWTOOL~1.7/proj_lib

---------

需要注意的是FWTools2.4.7使用Python的安装位置是“C:/Program Files/FWTools2.4.7/python”,它的版本是2.3.4,也许你的机器上已经有不同的版本的Python解释器,例如我的机器上,由于安装了ArcGIS软件,我的磁盘C:/Python25已经存在一个2.5版本的解释器。为了能够调试Python程序,我从网上搜索相关信息,不少人建议使用PythonWin,于是我安装了PythonWin2.5,该程序默认与C:/Python25安装在一起。

通过PythonWin中的File菜单打开FWTools2.4.7/bin/gdal_retile.py并单步调试,出现错误。错误的原因是“import gdal”错误,import gdal将FWTools2.4.7/pymod/gdal.py中的191行代码“import _gdal”,该语句的意图是加载FWTools2.4.7/pymod/_gdal.dll库,但是由于PythonWin的环境变量设置,调试器无法找到dll库所在路径。我尝试在PythonWin/Tools/Edit Python Path菜单中更改环境变量,可是尝试了多种方法最终没有解决该问题。

接下来,思考再三,分析该错误的原因要么是环境变量设置问题,要么是两个不同版本的Python存在,引起冲突。我对操作系统的环境变量做了设置,将上述六个环境变量都添加到系统环境变量中,结果还是无法调试。然后我觉得应该换一个开发环境,该开发环境应该具备两个条件:1,可以设置Python库的位置;2,可以设置程序依赖的环境变量。 最后找到了Pydev (http://pydev.org/index.html),下载1.5.8版本(org.python.pydev.feature-1.5.8.2010062823.zip)。这个工具之前我也没有接触过,它是Eclipse的插件。下载后,将其加入到Eclipse中(如何添加插件问Google)。

Pydev插件安装成功后,在Eclipse新建工程时多了一项“Pydev”,选择新建Pydev Project,弹出向导:

点击“Click here to configure an interpreter not listed”配置Python解释器的位置和版本,如下:

新建一个Python解释器,名字为Python2.3.4,然后指定其位置在C:/Program Files/FWTools2.4.7/python,Eclipse自动提示将C:/Program Files/FWTools2.4.7/python/Dlls, lib等添加进去。除了除了这几个目录还要添加几个目录。点击“New Folder”分别添加C:/Program Files/FWTools2.4.7/python/bin和C:/Program Files/FWTools2.4.7/python/proj_lib。

配置到这里,还是不能成功import gdal,还需要配置环境变量。同样在这个对话框中,点击Environment,如下图:

点击“New...”创建环境变量:

Name是 :Path

Value是:C:/PROGRA~1/FWTOOL~1.7/bin;C:/PROGRA~1/FWTOOL~1.7/python;

将C:/PROGRA~1/FWTOOL~1.7/bin/gdal_retile.py 拷贝到Eclipse工程的Src目录,按F11进行调试 OK了。

可以为python程序配置启动参数,鼠标右键点击gdal_retile.py选择Debug As菜单中的Debug Configurations弹出:

参数为

-levels 3 -ps 512 512 -co "TILED=YES" -co "BLOCKXSIZE=256" -co "BLOCKYSIZE=256" -co "COMPRESS=JPEG" -co "JPEG_QUALITY=75" -s_srs EPSG:4326 -v -targetDir D:/temp D:/1.tif

---调试FWTools2.4.7中的gdal_retile.py

转载自:http://blog.csdn.net/BoomingZhenhua/archive/2010/07/09/5722637.aspx
												

Eclipse中调试Python代码--调试FWTools2.4.7中的gdal_retile.py相关推荐

  1. eclipse 下安装PyDev并导入faster rcnn python代码调试

    Python在算法研究应用非常广泛,最近要研究faster rcnn的python代码,就得学习python,所以就需要一个趁手的工具来看python代码,否则只是用文本编译器找代码实在是太影响效率了 ...

  2. 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )

    文章目录 一.PyCharm 中进行断点调试 二.ELFFile 实例对象分析 一.PyCharm 中进行断点调试 在上一篇博客 [Android 逆向]使用 Python 代码解析 ELF 文件 ( ...

  3. Python - 调试Python代码的方法

    调试(debug) 将可疑环节的变量逐步打印出来,从而检查哪里是否有错. 让程序一部分一部分地运行起来.从核心功能开始,写一点,运行一点,再修改一点. 利用工具,例如一些IDE中的调试功能,提高调试效 ...

  4. 如何使用PyCharm调试Python代码

    by Ori Roza 通过Ori Roza 如何使用PyCharm调试Python代码 (How to use PyCharm to debug your Python code) Debuggin ...

  5. Python 代码调试二三事

    ♚ 作者王维栋,网易游戏运维与基础架构部,产品软件设计师,专注于智能监控.性能优化等领域. 本文来自<网易游戏运维平台 (neteasegameops)>微信公众号的投稿,隶属于网易游戏运 ...

  6. 【QA】Python代码调试之解决Segmentation fault (core dumped)问题

    Python代码调试之解决Segmentation fault 问题 问题描述 排查过程 1. 定位错误, 2. 解决办法 参考资料 问题描述 Python3执行某一个程序时,报Segmentatio ...

  7. python代码调试中间变量_Python代码调试的那些“最少且必要”技巧

    原标题:Python代码调试的那些"最少且必要"技巧 异常处理模块能帮助我们在运行期间处理异常信息,但Python代码还有更为基础的错误--语法错误和逻辑错误. 语法错误相对简单, ...

  8. 转:Python 代码调试技巧

    Python 代码调试技巧 转载于:https://www.cnblogs.com/kira2will/p/4254754.html

  9. pdb+ipdb 调试 Python代码

    pdb+ipdb 调试 Python代码 pdb 和 ipdb 的主要作用是用于 Python 程序的单步调试,Python 的调试可参考链接. ipdb exports functions to a ...

最新文章

  1. 【产品干货】APP留存率多少才合格——全面解析留存率
  2. 【Leetcode】岛屿问题(数量,周长,面积)
  3. 每周一起读 #02 | ICML 2019:基于粒子的变分推断加速方法
  4. iview的表格自定义_Vue中使用iview-UI表格样式修改和使用自定义模板数据渲染相关...
  5. django本地安装mysql_django使用mysql(本地环境下)_MySQL
  6. celery异步执行任务在Django中的应用实例
  7. poj2109 Power of Cryptography
  8. 代表什么_“缶”究竟代表着什么?
  9. 老男孩教育每日一题-124天:当我们使用ssh-keygen命令的时候,如何一键非交互生产密钥对呢?...
  10. 亚马逊员工因龙卷风身亡 贝索斯庆祝载人飞行惹众怒
  11. 收回扣、打麻将、开赌场?比亚迪自曝多名员工贪污腐败
  12. form表单会跨域_我的Vue不小心跨域了o()o 干它
  13. Matlab绘制隐式函数形成曲面的方法总结(转载)
  14. Python每日一练(7)-图片转字符画
  15. 神经+符号知识推理论文浅读4篇
  16. 什么叫CDN回源和域名回源,如何采用正确的正确的回源策略
  17. 看看老毛子士兵干的事情!
  18. 雷军系好生意:小米,不是一家公司在战斗!
  19. sqlrelay mysql_SQL Relay使用
  20. 如何删除PDF空白签名域?

热门文章

  1. HTPP的请求方式有哪些?
  2. 超炫的3D特效相册功能android
  3. shell(37) : java控制台运行打印颜色字体
  4. 解决冲突后,git merge --continue 时 lint不通过
  5. 前厅(the backrooms)
  6. 中国软件业的机会——抓住机遇、挑战未来
  7. CNSD在这里记录自己成长
  8. CSS圆角边框、盒子阴影、文字阴影(01-07课)
  9. armbian开启ssh_Armbian Ubuntu启用netplan配置网络
  10. 移动魔百盒CM201-2,CH代工(nand,emmc)免拆-刷机固件