【问题标题】:Python 3.3 - urllib.request - import errorPython 3.3 - urllib.request - 导入错误
【发布时间】:2013-03-27 03:12:36
【问题描述】:

当我尝试在 PyCharm 2.7 中的 OS X 10.8 上运行以下 Python 3.3 代码时(或使用 Python 3.3/2.7.3 启动器运行 .py 文件):

import urllib.request
f = urllib.request.urlopen('http://www.python.org/')
print(f.read(300))

我收到以下错误消息:

/System/Library/Frameworks/Python.framework/Versions/3.3/bin/python3 /Users/username/PycharmProjects/urllib/urllib.py
Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 1512, in _find_and_load_unlocked
AttributeError: 'module' object has no attribute '__path__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/username/PycharmProjects/urllib/urllib.py", line 3, in <module>
    import urllib.request
  File "/Users/username/PycharmProjects/urllib/urllib.py", line 3, in <module>
    import urllib.request
ImportError: No module named 'urllib.request'; urllib is not a package

Process finished with exit code 1

我可以成功运行代码的唯一方法是通过 Python shell。

关于如何解决这个问题的任何想法?

谢谢。


我将文件名更改为 url.py,现在它在 PyCharm 中成功执行。

但是当通过 Python Launcher 3.3 执行文件时,它给了我以下错误:

 File "/Users/username/PycharmProjects/urllib/url.py", line 3, in <module>
import urllib.request
ImportError: No module named request

为什么代码在 PyCharm (3.3) 中运行良好,但在使用 Python Launcher (3.3) 启动时出现错误?

【问题讨论】:

  • 将文件命名为 urllib.py 以外的其他名称
  • 默认情况下,Python 会首先在当前目录中搜索要导入的模块。

标签: python urllib pycharm python-3.3


【解决方案1】:

您将文件命名为urllib,它隐藏了标准库包。重命名您的文件。

【讨论】:

  • +1 用于提交答案而不是留下路过评论
  • 感谢您的快速回复!
  • 我将文件名更改为 url.py,现在它可以在 PyCharm 中成功执行。但是当通过 Python Launcher 3.3 执行文件时,它给了我以下错误: File "/Users/narekaramjan/PycharmProjects/urllib/url.py", line 3, in import urllib.request ImportError: No module named request 为什么代码在 PyCharm (3.3) 中运行良好,但在使用 Pythong Launcher (3.3) 启动时出现错误?
  • 我不知道“Python Launcher”是什么。它使用python3吗?你有__init__.py 文件吗?您的项目(也称为 urllib)可以遮蔽 urllib 包吗?
  • 在 OS X 上,Python 启动器是启动/运行您的 *.py 文件的应用程序。通过使用stackoverflow.com/questions/514371/… 删除 url.pyc 文件解决了问题,感谢 Pavel 的帮助!
【解决方案2】:

在mac中,VSCode使用的是Python 2。如果你打印urllib模块,你会发现这个模块是针对Python 2的。

所以,我添加了一条评论来选择 Python 版本:

#!/usr/local/bin/python3
from urllib.request import urlopen

【讨论】:

【解决方案3】:

在我的情况下,它解决了在命令面板中激活 (shift+commant+p) Linting: E​​nable Linting: on 并在 VMStudio 设置(首选项 => 设置)中在 Python:linter 中选择 flake8 => Linter 用作 flake8。

【讨论】:

    猜你喜欢
    • 2014-06-06
    • 2014-10-04
    • 1970-01-01
    • 2016-05-18
    • 2017-05-04
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    相关资源
    最近更新 更多