我收到了奇怪的输入请求信息“类型编号1:>”在python中导入urllib或urllib2模块时(使用解释器或从文件中导出 - 虽然解释器间歇性地遇到此问题但文件是一致的)
$ python testurl.lib
type number 1:>1
type number 2:>2
999
Traceback (most recent call last):
File "testurl.lib", line 1, in <module>
import urllib2
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 94, in <module>
import httplib
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 80, in <module>
import mimetools
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/mimetools.py", line 6, in <module>
import tempfile
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tempfile.py", line 35, in <module>
from random import Random as _Random
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random.py", line 45, in <module>
from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil
ImportError: cannot import name log
输出/错误是相同的,无论输入'1'和'2'是否给定。
试图:
Python 2.7.10
Python 2.7.6
两个版本都提出了问题
答案 0 :(得分:1)
您的问题是您的PYTHONPATH中有一个tags/tag-name
文件,这是导入模块时搜索的目录链。它从您当前的工作目录和脚本所在的目录开始,因为您在其中一个目录中有一个math.py
文件(在这种情况下它们可能是相同的目录),它是在{{{{}之前导入的。 1}}标准库中的模块。
TLDR:切勿将标准库模块的名称用于您自己的模块,因此不会遇到此问题。
答案 1 :(得分:1)
问题是您在同一个文件夹中有math.py
。
导入python时查找当前文件夹,当找到math.py
时,它会尝试在数学模块之前导入它。