直接执行Python程序或从Makefile执行Python程序时没有找到模块,但在使用" python"运行时工作正常。

时间:2016-05-05 15:38:32

标签: python makefile

我有一个使用ElementTree模块的python程序。当我使用" python"运行我的程序时如下......

python myprogram.py

......它运作正常。但是当我从Makefile内部运行它(与Makefile中的上述命令相同)时,它会显示 " ImportError:没有名为etree.ElementTree的模块" 。当我添加"#!/ usr / bin / env python"时,我也看到同样的错误。在第一行并尝试直接执行myprogram.py。

我主要感兴趣的是能够从Makefile运行我的程序(无论是使用" python"命令还是直接执行都没关系,只要我可以从Makefile执行)。

我在SO中找到了2个线程,即......

  1. Transparent Data Encryption (TDE)
  2. ImportError: No module named when module is there
  3. ...但这两个线程谈论导入非标准(即定制模块)。我如何解决这个问题,因为我正在使用标准的python模块,并且我希望能够从Makefile运行?

1 个答案:

答案 0 :(得分:1)

见评论。安装了多个版本的Python。模块的默认路径在当前python的目录结构中,因此正在搜索错误的目录。

在交互模式下,可能是在启动文件中设置了PATH环境变量。启动文件还有其他可能性,例如名为" python"的别名。可能已设置(不导出别名)。

解决方案是显式使用所需python的完整路径名。

这说明了在脚本中使用#!/usr/bin/env的问题 - 它假定环境对于所需的python版本始终是正确的。使用env也存在安全问题。