环境 Python版本:3.4.2 操作系统版本:OS X Mavericks
您好,
我想用python做一些网络抓取示例。
所以,我创建了脚本文件并命名为' html.py'。 (在我的项目目录中)
但是,当我用python3执行它时,会产生这样的错误。
-------------------------------------------错误消息 - ---------------------------------------------
Traceback (most recent call last):
File "html.py", line 1, in <module>
from bs4 import BeautifulSoup
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/bs4/__init__.py", line 30, in <module>
from .builder import builder_registry, ParserRejectedMarkup
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/bs4/builder/__init__.py", line 4, in <module>
from bs4.element import (
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/bs4/element.py", line 5, in <module>
from bs4.dammit import EntitySubstitution
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/bs4/dammit.py", line 11, in <module>
from html.entities import codepoint2name
File "/Users/tester/Project/Python/html.py", line 1, in <module>
from bs4 import BeautifulSoup
ImportError: cannot import name 'BeautifulSoup'
但是,我安装了#BeautifulSoup4&#39;通过&#39; sudo pip3安装BeautifulSoup4&#39;。
并且,我检查它是否安装在正确的路径中。
奇怪的是我尝试导入了#BeautifulSoup4&#39;在不同的目录中使用python3 shell模式 (例如,不在我的项目目录中),
它没有错误。
只有在我执行该目录中的脚本文件时才会出现错误。 (其中&#39; html.py&#39;存在)
那么,为什么会这样呢?
而且,当我更改脚本文件名时,错误也会消失。 (html.py - &gt; test_html.py)
文件名出了什么问题?
我不允许将模块名称用作我的脚本文件吗?
答案 0 :(得分:2)
html
是a standard module的名称。
我猜测,在某些时候,BeautifulSoup正在导入这个html模块。但是,Python(默认情况下)将首先在您运行的脚本文件的目录中查找模块。因此,它会找到并导入您的html.py
而不是标准模块。
在程序启动时初始化,此列表的第一项, path [0],是包含用于的脚本的目录 调用Python解释器
您可以更改脚本的名称(好主意)或修改sys.path
以更改Python查找模块的位置(不好主意)。