virtualenv之python 和 bpython 在 Virtualenv 中使用不同的 PYTHONPATH
现男友
阅读:44
2024-02-27 23:08:18
评论:0
我设置的任何虚拟环境的 sys.path 发生了一些奇怪和意外的事情。例如,一个干净的环境:
$ virtualenv test
$ source test/bin/activate
(test) $
这是预期的 PYTHONPATH:
(test) $ python
>>> import sys
>>> print '\n'.join(sys.path)
/home/user/test/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg
/home/user/test/local/lib/python2.7/site-packages/pip-1.1-py2.7.egg
/home/user/test/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg
/home/user/test/lib/python2.7/site-packages/pip-1.1-py2.7.egg
/home/user/test/lib/python2.7
/home/user/test/lib/python2.7/plat-linux2
/home/user/test/lib/python2.7/lib-tk
/home/user/test/lib/python2.7/lib-old
/home/user/test/lib/python2.7/lib-dynload
/usr/lib/python2.7
/usr/lib/python2.7/plat-linux2
/usr/lib/python2.7/lib-tk
/home/user/test/local/lib/python2.7/site-packages
/home/user/test/lib/python2.7/site-packages
但这是我真正得到的:
(test) $ bpython
>>> import sys
>>> print '\n'.join(sys.path)
/usr/bin
/usr/lib/python2.7
/usr/lib/python2.7/plat-linux2
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages
我无法弄清楚这两个不同的 sys.paths 的原因。 因此,没有 pip 安装工作! 我正在使用 Virtualenv 1.7.2、Ubuntu 12.04、Python 2.7.3。 任何帮助将不胜感激。
请您参考如下方法:
我没有为每个 virtualenv 安装一个 bpython 副本,而是将此函数添加到我的 shell 配置文件中(例如 ~/.bashrc
或 ~/.zshrc
) .它用一些逻辑包装 bpython 命令以加载虚拟环境的 python 路径(如果你有一个事件的虚拟环境)。
bpython() {
if test -n "$VIRTUAL_ENV"
then
PYTHONPATH="$(python -c 'import sys; print ":".join(sys.path)')" \
command bpython "$@"
else
command bpython "$@"
fi
}
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。