[英]Python codes runs using idle but fails on command line?
我正在學習Python,我在我正在閱讀的書中編寫了一個腳本來導入urllib庫。 當我從IDLE運行它時,這工作正常,但如果我去文件所在的文件夾並運行“python test.py”我得到一個錯誤,它告訴我
Traceback (most recent call last):
File "test.py", line 1, in ?
import urllib.request
ImportError: No module named request
我確認我使用的是Python 3.1.2。 任何建議或想法為什么在命令行上失敗?
我的代碼:
import urllib.request
import time
price = 99.99
while price > 1.01:
time.sleep(3)
page = urllib.request.urlopen("http://www.beans-r-us.biz/prices.html")
text = page.read().decode("utf8")
where = text.find('>$')
start_of_price = where + 2
end_of_price = start_of_price + 4
price = float(text[start_of_price:end_of_price])
print ("Buy!")
urllib.request
是在Python 3中引入的。當您從命令行運行代碼時,很可能使用較舊的Python 2.x二進制文件。
在命令行上鍵入python --version
以查看正在使用的Python。
編輯以回應Drewdin的評論
運行Mac OS X的Python 3.1.2安裝程序,我看到:
注意:默認情況下,此程序包不會更新您的shell配置文件,也不會在/ usr / local中安裝文件。 雙擊任何時候更新Shell配置文件以使3.1.2成為默認Python。
安裝程序將應用程序放在Applications文件夾中的“Python 3.1”中,並將/Library/Frameworks/Python.framework中的底層機器放入。 它也可以選擇將鏈接放在/ usr / local中的命令行工具中,默認情況下你必須將框架內的“bin”目錄添加到shell的搜索路徑中。
因此,根據您的安裝方式,您可能已經在/usr/local/bin
放置了鏈接,這些鏈接將位於您的路徑中。 如果您在安裝時選擇了此選項,那么您應該做的就是在shell中鍵入python3
或python3.1
以獲取更新版本。
否則,雙擊“更新Shell配置文件”,或將其添加到您的路徑:
export PATH=$PATH:/Library/Frameworks/Python.framework/Versions/3.1/bin
默認情況下,Python 3.x不會在Unix / Linux環境中生成python
命令別名,因為它可能會干擾依賴於默認安裝的Python的系統進程/命令。
我在同一本書“Head First Programming”中使用相同的例子時遇到了這個問題。首先,我安裝了Python 3,因為ubuntu推出的版本目前是Python 2:
sudo apt-get install python3
然后,您必須安裝相應的空閑:
sudo apt-get install idle-python3.2
按alt + F2打開你的運行對話框,輸入' idle-python3.2
'並點擊返回 - 你現在會看到你的python shell在屏幕頂部顯示'Python 3.2.2'!
好吧,錯誤是說它找不到庫,所以環境之間有一些不同。
這是一個有用的python模塊教程 。
看看PYTHONPATH環境變量:
$ echo $PYTHONPATH
至少在UNIX機器上。 (老實說,不要回想起Windows。)
看看Python的內置路徑
print sys.path
可能的情況是PYTHONPATH在命令行和IDLE環境之間有所不同。
您可以from urllib import request
,
或者你在通話期間指定它
import urllib
urlib.request (...)
Drewdin,當你在終端命令行輸入'python'時,它會顯示它正在運行的版本。 如果它不是3.1,這是在引入urllib.request時,請嘗試python3.1 test.py
另外,嘗試import urllib
而不是import urllib.request
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.