我正在学习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!")
答案 0 :(得分:4)
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中键入python3
或python3.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”!