Python代码使用空闲运行但在命令行上失败?

时间:2010-10-18 01:01:32

标签: python

我正在学习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!")

5 个答案:

答案 0 :(得分:4)

Python中引入了

urllib.request。当您从命令行运行代码时,很可能使用较旧的Python 2.x二进制文件。

在命令行上键入python --version以查看正在使用的Python。

编辑以回应Drewdin的评论

运行适用于Mac OS X的Python 3.1.2安装程序,我看到了:

  

注意:默认情况下,此软件包不会更新您的shell配置文件,也不会在/ usr / local中安装文件。双击任何时候更新Shell配置文件,使3.1.2成为默认的Python。

     

安装程序将应用程序放在“Python 3.1”中   在您的Applications文件夹中,以及底层机器中   /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的系统进程/命令。

答案 1 :(得分:0)

嗯,错误是说它无法找到库,因此环境之间存在一些不同之处。

这是tutorial on python modules,可以提供帮助。

查看PYTHONPATH环境变量:

 $ echo $PYTHONPATH

至少在UNIX机器上。 (老实说,不要忘了Windows。)

还可以看看Python的内置路径

 print sys.path

可能的情况是PYTHONPATH在命令行和IDLE环境之间有所不同。

答案 2 :(得分:0)

要么from urllib import request

或在通话期间指定

import urllib
urlib.request (...)

答案 3 :(得分:0)

Drewdin,当你在终端命令行输入'python'时,它会显示它正在运行的版本。如果它不是3.1,即引入urllib.request时,请尝试python3.1 test.py

另外,请尝试import urllib而不是import urllib.request

答案 4 :(得分:0)

我在同一本书“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”!