命令提示符下的Python模块导入问题
我安装了一些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 个回答
你需要确保 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
,确保它已经改变。只要你指向了正确的目录,你就大功告成了。
在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
里的所有包就可以被导入使用了。
你现在有两个不同的Python版本,一个是2011年10月4日的,另一个是2011年11月28日的。第二个版本没有安装whoosh这个库。
你可以选择以下几种方法:
查看IDLE使用的是哪个版本,然后在命令行中运行它。要找到这个版本,打开IDLE后运行
import sys; print sys.executable
。这样可以显示出安装了相关库的Python版本的位置。或者,你可以通过在命令行中安装相同的库来增强你的命令行版本(也就是说,运行
python setup.py install
来安装你想要加载的各种库)。