2016-12-29 131 views
0

我已经在我的Mac中安装了python。当我在终端输入python3,然后导入请求和bs4时,它会导入它并正确运行程序。 但是,当我在Python文件运行它python3 file_name.py,它提供了以下错误:Python请求和beautifulsoup模块不导入

import requests 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/__init__.py", line 52, in <module> 
    from .packages.urllib3.contrib import pyopenssl 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/__init__.py", line 27, in <module> 
    from . import urllib3 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/__init__.py", line 8, in <module> 
    from .connectionpool import (
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 3, in <module> 
    import logging 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/logging/__init__.py", line 28, in <module> 
    from string import Template 
    File "/Users/dark_archer/Desktop/src/string.py", line 1, in <module> 
    n1,n2=map(int,input().split()) 
ValueError: not enough values to unpack (expected 2, got 0) 

我既蟒蛇3.5和3.6蟒得到了同样的错误。

+0

当你运行你的脚本它提示你输入或立即失败而不需要您采取任何行动?你得到的错误表明你没有从标准输入中得到任何输入,所以没有什么可以分配给'n1'和'n2'。 – 2016-12-29 07:49:36

+0

在程序文件中我只写了'import requests' – Abhishek

回答

1

问题是您命名了一个模块string.py,因此它导致导入器混淆,因为日志记录模块也尝试从标准库模块string.py导入某些东西。这会导致一个称为“名称映射”的问题,而您的本地定义模块将被加载,而不是标准库模块。

当您的string.py版本被导入时,它会触发导致错误的代码。

作为一个简单的修复,尝试将您的string.py模块重命名为其他内容。

有关名称的阴影更多信息请查看“这个名字阴影陷阱”这个链接的部分:http://python-notes.curiousefficiency.org/en/latest/python_concepts/import_traps.html

+0

谢谢你的工作... – Abhishek

+0

@ user5516017 - 没问题 - 这个问题在后面有点让我很高兴,所以我很乐意提供帮助。将来您可能会考虑检查https://docs.python.org/3/py-modindex.html,以查看您的模块名称是否会覆盖任何标准库模块名称。 – 2016-12-29 08:06:14