奇怪的Python导入错误

时间:2019-07-15 08:14:14

标签: python python-import amazon-emr

我遇到了一个非常奇怪的错误,我在从AWS EMR的主目录启动的Python shell中遇到导入错误,而当我将cd导入另一个目录并且在此处启动Python shell。

EMR已安装Python 2.7。请让我知道我可以提供什么其他信息。这个问题使我发疯!

$ python
Python 2.7.16 (default, Mar 18 2019, 18:38:44)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import smtplib
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/smtplib.py", line 46, in <module>
    import email.utils
  File "email.py", line 2, in <module>
    from email.mime.multipart import MIMEMultipart
ImportError: No module named mime.multipart
>>> os.path.realpath('./')
'/home/abc123'
>>>
$ mkdir temp
$ cd temp
[temp]$ python
Python 2.7.16 (default, Mar 18 2019, 18:38:44)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import smtplib
>>> os.path.realpath('./')
'/home/abc12/temp'

1 个答案:

答案 0 :(得分:1)

第一个(主)目录中是否有一个名为email.py的文件?还是名为email的文件夹?如果是,则由于python的查找机制(应用根优先于其他导入),这可能会影响导入行为。

来自docs :(重点是我)

  

导入名为spam的模块时,解释器首先搜索具有该名称的内置模块。如果找不到,它将在变量sys.path给出的目录列表中搜索名为spam.py的文件。 sys.path从以下位置初始化:

     
      
  • 包含输入脚本的目录(或当前目录)   如果未指定文件)。
  •   
  • PYTHONPATH(目录名称列表,语法与shell变量PATH相同。)
  •   
  • 与安装有关的默认设置。
  •