所以昨天我不得不创建一个virtualenv,以便能够安装因OS X El Capitan的新SIP而无法安装的Python模块。我以为我做的一切都是正确的,但今天我得出了一个不同的结论。我希望我能清楚这一点。
我的python自定义安装位于myname / learnp / imdb_module,这是我使用virtualenv创建它的地方。编辑:我后来将其移至myname / learnp / ayr2 / imdb_module。
然而,当我尝试运行解释器时,它似乎总是默认为库中的Python或这些行中的某些东西。我发现了这个,因为我设法安装在这个自定义python环境中的某个模块无法导入,当我检查了我的模块时,它与我的预期不一样。
此外,似乎我想在CUSTOM virtualenv上安装的所有其他模块都安装在主python env上,而且我并没有在自定义环境中安装这些模块。
对不起,我现在很困惑。
非常感谢任何建议!
更新
关注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
答案 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'。