【问题标题】:Are there file naming rules for python?python有文件命名规则吗?
【发布时间】:2014-11-17 05:59:55
【问题描述】:

环境 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'

但是,我通过“sudo pip3 install BeautifulSoup4”安装了“BeautifulSoup4”。

而且,我检查了它是否安装在正确的路径中。

奇怪的是,我试图用 python3 shell 模式在不同的目录中导入“BeautifulSoup4”(例如,不在我的项目目录中),

它不会出错。

仅当我在该目录中执行脚本文件时才会出现错误。 (存在'html.py')

那么,为什么会这样呢?

而且,当我更改脚本文件名时,错误也会消失。 (html.py -> test_html.py)

文件名有什么问题?

我不允许使用模块名称作为我的脚本文件吗?

【问题讨论】:

    标签: python python-3.x python-module


    【解决方案1】:

    htmla standard module 的名称。

    我猜,BeautifulSoup 会在某个时候导入这个 html 模块。但是,Python 将(默认情况下)首先在您正在运行的脚本文件的目录中查找模块。所以它会找到并导入你的html.py,而不是标准模块。

    来自docs on sys.path

    在程序启动时初始化,此列表的第一项, path[0], 是包含脚本的目录 调用 Python 解释器

    您可以更改脚本的名称(好主意)或修改 sys.path 以更改 Python 查找模块的顺序(坏主意)。

    【讨论】:

    • 在 stdlib 模块之后命名用户模块(例如 random.py)是一个常见的初学者问题。文档有一个可以检查的模块索引。 2.7.8 有 'htmllib',但 3.x 有 'html'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 2012-03-23
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    相关资源
    最近更新 更多