文件名跟模块名字冲突错误
问题描述
我明明安装了bs4,但为什么总是提示如下信息呢?
#!/usr/bin/env python
#-*- coding : utf-8-*-
#python 3.5
'''Module-function'''
__author__ = 'AJ Kipper'
from bs4 import BeatifulSoup
soup = BeatifulSoup('')
错误提示:
/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/Jason/Desktop/test/bs4.py
Traceback (most recent call last):
File "/Users/Jason/Desktop/test/bs4.py", line 10, in <module>
from bs4 import BeatifulSoup
File "/Users/Jason/Desktop/test/bs4.py", line 10, in <module>
from bs4 import BeatifulSoup
ImportError: cannot import name 'BeatifulSoup'
错误提示很奇怪,为什么奇怪呢?因为提示的不是说不能导入bs4,而是提示不能从bs4导入BeautifulSoup,难道我安装的bs4是盗版的?#!=.=
问题解答
其实原因很简单,看看我的文件名就知道了
我的文件名就是bs4,也就是说,Python模块的导入是按照模块名字先从当前目录寻找,再从包的系统路径里面寻找的,如果我的文件名字就是bs4,那么其实导入的是自身这个文件,没有BeatifulSoup这个类就很正常了,其实不只是自身文件名,只要是自己创建的Python文件,都不能跟Python的库名字一模一样,不然就会出现这种错误。