python-virtualenv使用需要注意的几个问题
virtualenv是python的一个虚拟化环境工具,可以帮助我们在同一台host上创建多套纯净的python解释器环境并实现相互隔离,各个环境下安装的库仅限于自己的环境,不会影响到别人。在使用virtualenv的过程中碰到了一些跟linux用户相关的问题,记录到这里帮助和我一样的新手更好的理解virtualenv的使用,避免再走弯路。最初遇到的问题是这样的:我用root身份...
virtualenv是python的一个虚拟化环境工具,可以帮助我们在同一台host上创建多套纯净的python解释器环境并实现相互隔离,各个环境下安装的库仅限于自己的环境,不会影响到别人。
在使用virtualenv的过程中碰到了一些跟linux用户相关的问题,记录到这里帮助和我一样的新手更好的理解virtualenv的使用,避免再走弯路。
最初遇到的问题是这样的:
我用root身份创建了一个虚拟环境
test
,然后以普通用户lcheng
身份激活了该虚拟环境:
然后我想在test
环境中装个click
库,提示我权限不够,我就只好sudo
安装
看起来很正常,安装成功了,然而导入的时候提示我不存在。。
怎么回事? 退出解释器后用pip list看了下,确实没有!!
然而,当我用sudo执行pip list时,发现加不加sudo,两次pip list的结果差别很大,sudo pip list显示click是已经安装了的!!
问题到底出在哪了呢? 当我退出virtualenv后再用pip list看下,结果怎么样呢?
发现问题没有? 在虚拟环境中sudo pip list看到的结果跟退出虚拟环境的结果完全一样,也就是说在虚拟环境中执行sudo pip install命令并没有把库装在虚拟环境里面,而是装在外面了。
后来我又测试了几次,总结如下:
- root用户和普通用户都可以创建虚拟环境(记作venv),venv的相关文件和文件夹的owner都是该用户,所以如果是非root的其他用户激活该venv的话,会因为文件权限的问题导致python库安装失败
tips:非root用户不要去激活使用其他用户创建的venv- 一旦以用户A的身份激活某venv后,在虚拟环境中就不能再通过su命令切换其他用户,否则会自动退出虚拟环境,如:
tips:在虚拟环境中不要通过su切换用户- 以用户A的身份激活某venv后,在虚拟环境中所有通过sudo + cmd执行的命令,都等同于在虚拟环境外执行,这个就是我之前碰到的问题了。
tips:在虚拟环境中不要通过sudo执行命令
上面提到的3个tips,在使用virtualenv的时候一定要注意。
更多推荐
所有评论(0)