python正在使用virtualenv中的全局模块而不是本地模块

时间:2014-07-24 23:56:01

标签: python macos python-2.7 pip virtualenv

这是我第一次使用virtualenv和MySQLdb,我收到了一个奇怪的错误。在我设置了这个virtualenv之后,我在virtualenv中安装了MySQLdb(实际上已经激活了ENV)。 MySQLdb未全局安装。当我在我的ENV文件夹中,打开一个python终端,并尝试导入模块我得到以下内容:

  
    
      

导入MySQLdb       Traceback(最近一次调用最后一次):         文件"",第1行,in       ImportError:没有名为MySQLdb的模块

    
  

然而,当我从site-packages文件夹

执行相同的操作时

... ENV / LIB / python2.7 /站点包

  
    
      

导入MySQLdb

    
  
一切似乎都运转得很好。

另外,当我跑

  
    
      

帮助('模块')

    
  

从任一目录中,我得到的列表略有不同(即使它告诉我我使用相同的python可执行文件)。出于某种原因,同样的python可执行文件正在从不同的地方获取它的模块,并且它唯一能够获得它应该拥有的模块在ENV内部,在这种情况下是site-packages文件夹。如果我不在site-packages文件夹中,它似乎得到一个不同的列表,我无法访问MySQLdb。

我使用Mac OSX Mavericks,XCode是我所知道的最新版本(我发现我并没有使用它)。

我用它来设置virtualenv

virtualenv -p /usr/local/Cellar/python/2.7.8/bin/python ENV

which python在ENV和site-packages中都给了我这个

  

... ENV /斌/蟒

版本

virtualenv版本1.11.6 python 2.7.8(不是默认的python)

UPDATE:

已安装sqlalchemy

(ENV)tims-mbp:ENV timbauer$ pip install sqlalchemy 

我得到完全相同的影响。看起来即使它在ENV内部使用正确的python,这个版本的python只有在它直接位于site-packages文件夹中时才能获得正确的模块列表。否则它看起来像是从全局列表中拉出来的

1 个答案:

答案 0 :(得分:0)

发现了这个问题。在ENV / bin / pip里面有一条线说了这个

#!/Users/timbauer/Desktop/ENV/bin/python2.7

需要说明这个

#!/Users/timbauer/Desktop/ENV/bin/python

切换以上并重新启动终端似乎修复了所有问题。我不得不删除virtualenv并重新安装所有内容以使其工作,但我刚刚开始,所以这不是一个大问题。