我已经安装了一些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版本?感谢。
答案 0 :(得分:3)
您正在运行两种不同的Python安装,一种日期为10/4/2011,另一种日期为2011年11月28日。第二个没有安装 whoosh 。
您的选择是:
查找IDLE使用的版本并从命令行运行它。要找到它,请启用IDLE并运行import sys; print sys.executable
。这将显示安装了软件包的版本的位置。
或者您可以通过在命令行安装相同的软件包来增强命令行版本(即运行python setup.py install
以获取要加载的各种软件包。
答案 1 :(得分:2)
在python路径中定义的所有目录中搜索包。
因此,如果IDLE
和terminal
的工作方式不同 - 意味着他们的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/
希望这有帮助。