簡體   English   中英

Python代碼使用空閑運行但在命令行上失敗?

[英]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中鍵入python3python3.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM