python-virtualenv使用需要注意的几个问题

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命令并没有把库装在虚拟环境里面,而是装在外面了。

后来我又测试了几次,总结如下:

  1. root用户和普通用户都可以创建虚拟环境(记作venv),venv的相关文件和文件夹的owner都是该用户,所以如果是非root的其他用户激活该venv的话,会因为文件权限的问题导致python库安装失败
    tips:非root用户不要去激活使用其他用户创建的venv
  2. 一旦以用户A的身份激活某venv后,在虚拟环境中就不能再通过su命令切换其他用户,否则会自动退出虚拟环境,如:
    这里写图片描述
    tips:在虚拟环境中不要通过su切换用户
  3. 以用户A的身份激活某venv后,在虚拟环境中所有通过sudo + cmd执行的命令,都等同于在虚拟环境外执行,这个就是我之前碰到的问题了。
    tips:在虚拟环境中不要通过sudo执行命令

上面提到的3个tips,在使用virtualenv的时候一定要注意。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在使用多个不同版本的 Python 时,最好使用虚拟环境来隔离它们。虚拟环境可以为每个项目提供独立的 Python 解释器和库,以便您可以在同一台计算机上同时运行多个项目,每个项目使用不同的 Python 版本和依赖项。 以下是使用虚拟环境同时使用多个不同版本的 Python 的步骤: 1. 安装虚拟环境包(virtualenv或conda等) 2. 在终端中创建一个新的虚拟环境并指定使用的 Python 版本,例如: 使用virtualenv:virtualenv -p /usr/bin/python3.7 myenv 使用conda:conda create -n myenv python=3.7 3. 激活虚拟环境: 使用virtualenv:source myenv/bin/activate 使用conda:conda activate myenv 4. 在虚拟环境中安装所需的 Python 包和依赖项。 5. 当您需要在另一个 Python 版本上工作时,请创建另一个虚拟环境并重复上述步骤。 请注意,不同的操作系统可能有不同的步骤。此外,虚拟环境不适用于一些系统级别的软件包和库,例如某些操作系统库和驱动程序。在这些情况下,可能需要安装和配置特定版本的软件包,以便您可以在系统范围内使用它们。 ### 回答2: 使用多个不同版本的Python,可以通过以下几种方式来实现: 1. 虚拟环境(Virtualenv):使用虚拟环境可以创建独立、隔离的Python运行环境。首先,安装Virtualenv工具,然后使用命令创建虚拟环境:`virtualenv -p python3 myenv`,其中`-p`参数指定了要使用的Python版本。进入虚拟环境后,使用`source myenv/bin/activate`命令激活虚拟环境,此时使用的就是指定的Python版本。可使用`deactivate`命令退出虚拟环境。 2. Anaconda:Anaconda是一个强大的数据科学平台,可以同时管理多个Python版本。安装Anaconda后,通过Anaconda Navigator可视化界面选择不同的Python版本,或使用`conda create -n myenv python=3.6`命令创建具有指定版本的环境。通过`conda activate myenv`激活环境,即可使用指定的Python版本,使用`conda deactivate`命令退出环境。 3. 编辑器/集成开发环境(IDE)设置:某些编辑器或IDE允许用户设置使用特定的Python解释器版本。例如,在PyCharm中,可以在项目设置中选择所需的Python版本。 4. 使用软链接:在某些情况下,可以使用软链接指定不同的Python版本。首先,将不同版本的Python安装到不同的目录中,然后使用软链接将某个目录下的`python`命令指向所需的Python版本。这样,在命令行中使用`python`时,实际上使用的是链接到的Python版本。 请注意,在使用多个Python版本时,应注意环境的隔离性和一致性,避免出现冲突或依赖问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值