virtualenv之python 和 bpython 在 Virtualenv 中使用不同的 PYTHONPATH

现男友 阅读:26 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 
} 


标签:Python
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号