2016-12-29 166 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