庄稼人不是专职python开发的道友,虽然与python相识已多年,可惜相识不相知,只是偶尔借助pydev写一些简单的小工具。
多年来,一直困惑于这样一个问题:同样的工程,同样的代码,使用pydev可以运行任意一个python脚本,而使用命令行运行却不行?命令行下(或者双击执行)总是提示“ImportError: No module named xxx”?pydev究竟做了什么魔术呢?
长话短说,以上面工程为例,如果是在命令行中直接执行 python c.py , 都会提示"ImportError: No module named xx_package.b".但是pydev中可以直接运行。
比较两者的包查找路径,也就是sys.path,
pythondev:
['F:\\Archive\\workspace-java\\PyExperiment\\xx_package', 'F:\\Archive\\workspace-java\\PyExperiment', 'F:\\Archive\\workspace-java\\PyExperiment\\xx_folder' ,。。。]
命令行:
['F:\\Archive\\workspace-java\\PyExperiment\\xx_package', 。。。]
什么都不用说了,明眼人一看就明白了,pydev在运行时会把当前工程的所有文件夹路径都作为包的搜索路径,而命令行默认只是搜索当前路径。也于是乎,xx_packag