在当前目录下运行copy.py的Python交互式shell?

时间:2013-09-04 07:41:00

标签: python-3.x

我的当前目录中有一个名为copy.py的脚本,其中包含以下内容:

#!/usr/bin/env python3

print("Ahoy, matey!")

如果我运行Python交互式shell并执行一些引发异常的操作(例如引用不存在的变量),令我惊讶的是,“Ahoy,matey!”这句话。打印出来了。

当我将copy.py脚本重命名为其他内容时,例如script.py,它不再像那样。我的问题是,为什么交互式shell必须在出错时调用copy.py?是否预期和/或记录了这种行为?

谢谢!

1 个答案:

答案 0 :(得分:1)

当Python导入模块时,module search path order为:

  • 包含输入脚本(或当前目录)的目录。
  • PYTHONPATH(目录名列表,语法与shell变量PATH相同)。
  • 依赖于安装的默认值。

现在,在引发异常时,Python会运行特定的代码。尝试导入copy Python模块的任何代码都将导入模块并在其中打印字符串。这就是为什么你不应该使用也是标准Python模块名称的名称。