命令提示符中的python模块导入问题

时间:2011-11-30 04:24:32

标签: python import module

我已经安装了一些python包,我可以使用IDLE而不是命令shell窗口来访问它。

以下是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'?请帮我解决这个问题。感谢。

UPDATE1:

谢谢大家。像大多数人猜测的那样,我安装了两个不同的版本。

我的空闲路径显示

['/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 个答案:

答案 0 :(得分:3)

您正在运行两种不同的Python安装,一种日期为10/4/2011,另一种日期为2011年11月28日。第二个没有安装 whoosh

您的选择是:

  1. 查找IDLE使用的版本并从命令行运行它。要找到它,请启用IDLE并运行import sys; print sys.executable。这将显示安装了软件包的版本的位置。

  2. 或者您可以通过在命令行安装相同的软件包来增强命令行版本(即运行python setup.py install以获取要加载的各种软件包。

答案 1 :(得分:2)

在python路径中定义的所有目录中搜索包。

因此,如果IDLEterminal的工作方式不同 - 意味着他们的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中的所有包都可以导入了。

答案 2 :(得分:1)

您需要确保在PYTHONPATH~/.profile中正确设置/usr/<user-name>/.profile

例如(这适用于OS X,但只是找到计算机上安装Python的位置):

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

只有OS X需要导出前缀,您可以使用终端中的echo $PYTHONPATH检查当前路径。

一旦您将PYTHONPATH更改为指向您的python包文件夹版本,您需要强制终端使用此更新路径:

source ~/.profile

然后再次尝试echo $PYTHONPATH并确保更改。然后只要您指向正确的目录就应该设置。

答案 3 :(得分:0)

这是由于路径问题。在使用您导入或外部使用的软件包时,我建议使用虚拟envs和pip作为标准。

这里有一些很棒的笔记:https://python-guide.readthedocs.org/en/latest/

希望这有帮助。