文件名跟模块名字冲突错误

问题描述

我明明安装了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的库名字一模一样,不然就会出现这种错误。

results matching ""

    No results matching ""