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

Confused about Python installations, module installation, and interpreter

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

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

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

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

对不起,我现在很困惑。

非常感谢任何建议!

更新:

已关注 进行故障排除,我认为发生了一些奇怪的事情,引用我对他的回答的评论:

HI, thanks for taking the time to answer. This is basically the way I understood this. However, let me attach a screenshot: http://i.imgur.com/DfpngJq.jpg . Am I right to assume something is wrong here? My prompt is changed with the virtualenv named "imdb_module", but when I type in which python it doesn't list ayr2/imdb_module/bin but rather a folder with the path usr/bin/python, which if I understand correctly is the "default" environment.

And not if this helps in any way, but echo $PATH when (imdv_module) appears to the right of the prompt, gives this (I redacted my name): /Users/REDACTEDNAME/learnp/imdb_module/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

在创建 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

如果您没有在 virtualenv 的目录下看到 python 和 pip 位置,那么 virtualenv 还没有被激活。

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

#!/usr/bin/env python

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

#!/tmp/testvenv/bin/python

相对于,说:

#!/usr/bin/python

第一个会在当前环境中搜索,由virtualenv激活设置。第二个明确指向 virtualenv 的“python”。