Python代码在IDLE中运行正常,但在命令行中失败?

1 投票
5 回答
3147 浏览
提问于 2025-04-16 05:39

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

这个错误提示是说找不到库文件,所以在不同的环境中可能有些地方不一样。

这里有一个关于Python模块的教程,可能会对你有帮助。

你可以看看PYTHONPATH这个环境变量:

 $ echo $PYTHONPATH

至少在UNIX系统上是这样。(说实话,我不太记得Windows的情况了。)

你还可以查看一下Python的内置路径,使用这一行:

 print sys.path

很可能PYTHONPATH在命令行和IDLE环境中是不同的。

0

你可以选择用 from urllib import request 这行代码来引入库,

或者在调用的时候直接指定它。

import urllib
urlib.request (...)
4

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。

安装程序会把应用程序放在你的应用程序文件夹中的“Python 3.1”里,而底层的文件会放在 /Library/Frameworks/Python.framework。它还可以选择性地在 /usr/local 中放置命令行工具的链接,默认情况下你需要把框架里的“bin”目录添加到你的 shell 搜索路径中。

所以,根据你安装的方式,你可能已经在 /usr/local/bin 中放置了链接,这样它就会在你的路径中。如果你在安装时选择了这个选项,你只需要在命令行中输入 python3python3.1 就可以使用更新的版本。

否则,你可以双击那个“更新 Shell 配置文件”,或者把以下内容添加到你的路径中:

export PATH=$PATH:/Library/Frameworks/Python.framework/Versions/3.1/bin

默认情况下,Python 3.x 在 Unix/Linux 环境中不会将 python 命令设置为别名,因为这可能会干扰依赖于默认安装的 Python 的系统进程/命令。

撰写回答