Python interpteter在virtualenv中找不到模块,但是pip看到它并且不会安装

use*_*262 5 python egg pip virtualenv

我正在尝试使用Nervana创建的virtualenv中的pytools模块作为他们的Neon深度学习包,但似乎无法找到pytools或pip它.当我进入virtualenv时,我看到了这种行为:

me@ARL--M6800:~/Downloads/neon$ source .venv/bin/activate
(.venv) me@ARL--M6800:~/Downloads/neon$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> import pytools
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  ImportError: No module named pytools
>>> 

>>> import sys
>>> sys.path
['', '/usr/local/lib/python2.7/dist-packages', '/home/me/Downloads/neon',
 '/home/me/Downloads/neon/.venv/lib/python2.7',
 '/home/me/Downloads/neon/.venv/lib/python2.7/plat-x86_64-linux-gnu',
 '/home/me/Downloads/neon/.venv/lib/python2.7/lib-tk',
 '/home/me/Downloads/neon/.venv/lib/python2.7/lib-old', 
 '/home/me/Downloads/neon/.venv/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/me/Downloads/neon/.venv/local/lib/python2.7/site-packages', 
 '/home/me/Downloads/neon/.venv/lib/python2.7/site-packages']



(.venv) me@ARL--M6800:~/Downloads/neon$ pip install pytools 
Requirement already satisfied (use --upgrade to upgrade): pytools in     
 /usr/local/lib/python2.7/dist-packages/pytools-2016.1-py2.7.egg
Requirement already satisfied (use --upgrade to upgrade): 
 decorator>=3.2.0 in /usr/local/lib/python2.7/dist-packages (from pytools)
Requirement already satisfied (use --upgrade to upgrade): appdirs>=1.4.0 
  in /usr/local/lib/python2.7/dist-packages/appdirs-1.4.0-py2.7.egg (from 
  pytools)
Requirement already satisfied (use --upgrade to upgrade): six>=1.8.0 in 
 /usr/local/lib/python2.7/dist-packages (from pytools)
Requirement already satisfied (use --upgrade to upgrade): numpy>=1.6.0 in 
 /usr/local/lib/python2.7/dist-packages (from pytools)
Run Code Online (Sandbox Code Playgroud)

所以,我无法导入,pytools因为它不在我的sys.path上.根据pip,它安装在/usr/local/lib/python2.7/dist-packages/pytools-2016.1-py2.7.egg目录中,这给我带来了3个问题:

第一:为什么我的virtualenv可以看到我的系统级软件包?我以为默认不是看他们.当我看到用于创建virtualenv的Makefile时,我看到了这一点

  # where our installed python packages will live
  VIRTUALENV_DIR := .venv
  VIRTUALENV_EXE := virtualenv -p python2.7  # use pyvenv for python3 install
  ACTIVATE := $(VIRTUALENV_DIR)/bin/activate
Run Code Online (Sandbox Code Playgroud)

哪个应该给我默认行为.

第二:为什么egg我的dist-packages目录中有目录?这不是更难找到这些模块吗?(虽然显然,我的系统环境python的sys.path已更新为在egg目录中搜索.当/如何???

第三:什么是修复事物的有效方法,以便我的virtualenv可以访问pytools?

(我会将我的列表编号而不是第一/第二/第三,但是我插入的Makefile代码格式不正确)

use*_*262 0

无论如何,我在主环境中使用 pip 卸载了 pytools。然后,进入我的虚拟环境并使用 pip 安装 pytools。最后,回到我的主环境并使用 pip install 重新安装 pytools。

现在一切正常了。(尽管奇怪的是,pytools 不再安装在“.egg”目录中。我认为这更好,但现在我更困惑为什么/何时将东西安装到 .egg 目录中)