命令提示符下的Python模块导入问题

2 投票
4 回答
16741 浏览
提问于 2025-04-17 07:22

我安装了一些Python包,可以在IDLE中使用,但在命令行窗口中却无法使用。

这是我在IDLE中的输出:

Python 2.7.2+ (default, Oct  4 2011, 20:03:08) 
[GCC 4.6.1] on linux2
Type "copyright", "credits" or "license()" for more information.
==== No Subprocess ====
>>> import whoosh

这是我在终端中的输出:

pradeep@ubuntu:~$ python
Python 2.7.2 (default, Nov 28 2011, 23:56:33) 
[GCC 4.6.1] on linux3
Type "help", "copyright", "credits" or "license" for more information.
>>> import whoosh
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named whoosh

我该如何让终端的Python指向IDLE中的Python包?为什么终端显示的是'linux3',而IDLE显示的是'linux2'?请帮我解决这个路径的问题。谢谢。

更新1:

谢谢大家。正如你们大多数人猜的,我安装了两个不同的版本。

我的IDLE路径显示:

['/home/pradeep', '/usr/bin', '/usr/local/lib/python2.7/dist-packages/Whoosh-2.3.0-py2.7.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/python2.7/dist-packages/gst-0.10', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client', '/usr/lib/python2.7/dist-packages/ubuntuone-client', '/usr/lib/python2.7/dist-packages/ubuntuone-control-panel', '/usr/lib/python2.7/dist-packages/ubuntuone-couch', '/usr/lib/python2.7/dist-packages/ubuntuone-installer', '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']

我的终端路径显示:

['', '/usr/local/lib/python27.zip', '/usr/local/lib/python2.7', '/usr/local/lib/python2.7/plat-linux3', '/usr/local/lib/python2.7/lib-tk', '/usr/local/lib/python2.7/lib-old', '/usr/local/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/site-packages']

我该如何删除终端版本,并在终端中安装IDLE版本?谢谢。

4 个回答

1

你需要确保 PYTHONPATH 在你的 ~/.profile/usr/<用户名>/.profile 文件中设置正确。

比如说(这个是针对 OS X 的,但你只需要找到 Python 在你电脑上的安装位置):

export PYTHONPATH="/usr/local/lib/python2.7/site-package/:$PYTHONPATH"

只有 OS X 需要加上 export 前缀,你可以在终端使用 echo $PYTHONPATH 来检查你当前的路径。

一旦你把 PYTHONPATH 改成指向你 Python 的包文件夹,你需要强制终端更新这个路径,使用以下命令:

source ~/.profile

然后再试一次 echo $PYTHONPATH,确保它已经改变。只要你指向了正确的目录,你就大功告成了。

3

在Python中,程序会在所有定义好的目录里寻找需要的包。

所以,如果你发现 IDLE终端 的表现不一样,那就是因为它们的Python路径不同。

那么,

你可以试试这个:在 IDLE终端 上都运行一下:

import sys
print sys.path  # this prints the list of directories in the python path.

对比一下你在两个地方得到的列表,IDLE 中多出来的目录里会有 whoosh

你可以这样把目录添加到 sys.path 中:

import sys
sys.path.append('/home/user/packages')

这样一来,/home/user/packages 里的所有包就可以被导入使用了。

3

你现在有两个不同的Python版本,一个是2011年10月4日的,另一个是2011年11月28日的。第二个版本没有安装whoosh这个库。

你可以选择以下几种方法:

  1. 查看IDLE使用的是哪个版本,然后在命令行中运行它。要找到这个版本,打开IDLE后运行 import sys; print sys.executable。这样可以显示出安装了相关库的Python版本的位置。

  2. 或者,你可以通过在命令行中安装相同的库来增强你的命令行版本(也就是说,运行 python setup.py install 来安装你想要加载的各种库)。

撰写回答