我在我的帐户上安装了python 3.3.6和ipython 3.0.0。我在Linux集群(RedHad4.9)上。当我启动ipython时,我收到以下消息:
WARNING: Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
WARNING: IPython History requires SQLite, your history will not be saved.
我不确定virtualenv
是什么,以及为什么我尝试使用virtualenv
。
我已经研究了一段时间,但我找不到解决方案。有人能以正确的方式暗示我吗?
答案 0 :(得分:4)
由于您从源代码安装了python和iPython,这似乎是最好的解决方法: 解决此问题的一种简单方法是在非root位置安装Python,并使用pip安装iPython。它不是在本地模块中在全局模块中找到iPython,因此它假设您正在使用virtualenv。只需使用pip安装。
对于虚拟环境,它们是一个虚拟的python安装,限制对全局模块的访问,因此您可以测试自定义模块,做其他很酷的事情。例如,您可以激活和停用不同的环境。安装一个(到同一目录)后:
$ virtualenv .
$ source bin/activate
然后我正在使用virtualenv。由于找到了iPython命令,但是全局Python与安装的不同,它给了我一个警告。 https://virtualenv.pypa.io/en/latest/
通常,如果您正在运行虚拟环境,那么您的shell应该反映这一点:
没有virtualenv:
alex@alex-Gazelle-Professional:~$
使用VirtualEnv:
(no-pyside)alex@alex-Gazelle-Professional:~$
编辑:
本地和全局模块之间的差异。 Python搜索已安装模块的路径如下:
import sys; print sys.path ['','/ home / alexxirtualenvs / no-pandas / lib / python2.7','/ home / alexxirtualenvs / no-pandas / lib / python2.7 / plat-x86_64-linux_gnu','/ home / alexvirtualenvs / no-pandas / lib / python2.7 / lib-tk','/ home / alexvirtualenvs / no-pandas / lib / python2.7 / lib-old','/ home / alexvirtualenvs / no-pandas / lib / python2.7 / lib-dynload','/ usr / lib / python2.7','/ usr / lib / python2.7 / plat-x86_64-linux_gnu','/ usr / lib / python2.7 / lib -tk','/ home / alexxirtualenvs / no-pandas / local / lib / python2.7 / site-package','/ home / alexxirtualenvs / no-pandas / lib / python2.7 / site -packages']
这是在虚拟环境中。看看搜索路径如何不包含/ usr / lib等。如果我停用virtualenv并全局搜索,我会得到以下信息:
>>> import sys; print sys.path
['', '/usr/local/lib/python2.7/dist-packages/h5py-2.5.0-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/XlsxWriter-0.7.3-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/pyqtgraph-0.9.10-py2.7.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/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/PILcompat', '/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/wx-3.0-gtk2']
在这里,除了''(当前目录)之外的所有内容都是全局安装的。
答案 1 :(得分:1)
我遇到了同样的错误,我在github得到了答案和足够的解释。
根据建议的编辑,尝试并执行以下步骤:
import os, sys, IPython
print os.environ['VIRTUAL_ENV']
print sys.executable
print IPython.__file__
print sys.path
这将打印virtualenv
,ipython executable
的路径。完成此操作后,点击head $(which ipython)
和hash -r
。现在尝试在终端的新标签页中打开ipython
。错误消失了。原因是:
which
不知道此缓存,因此ipython
不一定指向将在shell会话中调用之前将调用的ipython
。答案 2 :(得分:0)
是否已设置VIRTUAL_ENV
,echo $VIRTUAL_ENV
以检查VIRTUAL_ENV
中的export VIRTUAL_ENV=/path/to/virtual_env
或.bashrc
,然后打开新终端!