对Python安装,模块安装和解释器感到困惑

时间:2015-11-04 03:25:39

标签: python python-2.7 virtualenv

所以昨天我不得不创建一个virtualenv,以便能够安装因OS X El Capitan的新SIP而无法安装的Python模块。我以为我做的一切都是正确的,但今天我得出了一个不同的结论。我希望我能清楚这一点。

我的python自定义安装位于myname / learnp / imdb_module,这是我使用virtualenv创建它的地方。编辑:我后来将其移至myname / learnp / ayr2 / imdb_module。

然而,当我尝试运行解释器时,它似乎总是默认为库中的Python或这些行中的某些东西。我发现了这个,因为我设法安装在这个自定义python环境中的某个模块无法导入,当我检查了我的模块时,它与我的预期不一样。

此外,似乎我想在CUSTOM virtualenv上安装的所有其他模块都安装在主python env上,而且我并没有在自定义环境中安装这些模块。

对不起,我现在很困惑。

  • 我知道如何创建虚拟环境
  • 我知道如何激活它(它出现在终端线右侧)
  • 我不知道如何将模块安装到我的虚拟环境
  • 我不知道如何从虚拟环境运行解释器,所以我可以进行只能使用自定义env模块的python操作

非常感谢任何建议!

更新

关注Will Hogan's answer进行问题排查,我认为发生了一些奇怪的事情,引用我对其答案的评论:

  嗨,谢谢花时间回答。这基本上是我理解这一点的方式。但是,让我附上一个屏幕截图:http://i.imgur.com/DfpngJq.jpg。我在这里假设有问题是对的吗?使用名为“imdb_module”的virtualenv更改了我的提示,但是当我输入which python时,它不会列出ayr2/imdb_module/bin,而是列出路径为usr/bin/python的文件夹,如果我理解正确的话是“默认”环境。

     

如果这有任何帮助,请不要这样做,但是echo $PATH当(imdv_module)出现在提示右侧时,给出这个(我编辑了我的名字):/Users/REDACTEDNAME/learnp/imdb_module/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

1 个答案:

答案 0 :(得分:3)

在创建virtualenv时,您应该看到它安装setuptools和pip:

$ virtualenv testvenv
New python executable in testvenv/bin/python2.7
Also creating executable in testvenv/bin/python
Installing setuptools, pip...done.

确保virtualenv被激活后,您应该看到您的提示更改:

$ . ./testvenv/bin/activate
(testvenv)$ 

现在你可以确认python和pip的路径,它们应该在virtualenv中:

(testvenv)$ which python
/private/tmp/testvenv/bin/python
(testvenv)$ which pip
/private/tmp/testvenv/bin/pip

如果您没有看到python和pip位置位于virtualenv的目录下,那么virtualenv尚未激活。

如果您直接执行.py文件(而不是“python foo.py”),我还会确保您的shebang行使用:

#!/usr/bin/env python

甚至是virtualenv的python的完整路径,例如:

#!/tmp/testvenv/bin/python

相反,说:

#!/usr/bin/python

第一个将在当前环境中搜索,该环境将由virtualenv激活设置。第二个明确指出了virtualenv的`python'。