Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 592|回复: 0

Ubuntu18.0 解决python虚拟环境中不同用户下或者python多版本环境中指定虚拟环境的使用问题

[复制链接]
  • TA的每日心情
    奋斗
    前天 12:49
  • 签到天数: 789 天

    [LV.10]以坛为家III

    2049

    主题

    2107

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    722638
    发表于 2021-5-10 08:08:56 | 显示全部楼层 |阅读模式

    一. 不同用户下配置virtualenvwrapper的问题

    问题描述: 

    安装virtualnev和virtualnevwrapper之后,在.bashrc进行virtualenvwrapper的相关配置后重新加载.bashrc文件时报错.

    报错内容大致如下:

    /usr/bin/python: No module named virtualenvwrapper
    virtualenvwrapper.sh: There was a problem running the initialization hooks.
    
    If Python could not import the module virtualenvwrapper.hook_loader,
    check that virtualenvwrapper has been installed for
    VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is
    set properly

    也就是说系统检测当前pip下的安装软件中查找不到virtualenv和virtualenvwrapper.

     

     

    之所以会出现这样的问题有可能是以下几条原因:

    1. 在安装虚拟环境时, 可能是在使用普通用户下加了sudo命令进行安装了virtualenv和virtualenvwrapper.
      使用命令   pip list   进行查看,是否安装成功, 如果使用了pip3 进行安装虚拟环境要使用 pip3 list进行查看. 
      如果当前用户下pip已安装软件中没有看到 virtualenv 和  virtualenvwrapper 基本上就是以上的原因

      解决方法:

      - 如果是普通用户不要加sudo进行安装
      pip install  virtualenv 
      pip install  virtualenvwrapper

      安装之后使用pip list可以查看到已经成功的安装了两个软件, 接下来进行配置即可

      配置.bashrc
      注意!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

      这时要在当前用户的目录下修改.bashrc, 意思就是root用户和普通用户的~目录下都存在一个.bashrc配置文件
      使用不同的用户执行 vim ~/.bashrc 这句命令时 其实是操作了不同的文件
      root 用户相当于执行了 vim /root/.bashrc
      普通用户则是 vim /home/allen(普通用户名)/.bashrc

      root用户要在/root/.bashrc中进行配置
      普通用户要在/home/allen(用户名)/.bashrc 下进行安装

      在配置文件中添加配置内容
      WORKON_HOME=~/Envs # 设置virtualenv的统一管理目录, 创建的虚拟环境文件都会放在这里
      VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' # 添加virtualenvwrapper的参数,生成干净隔绝的环境
      VIRTUALENVWRAPPER_PYTHON=/opt/python3/bin/python3 # 指定python解释器的本体(注意此路径随不同的linux环境改变而改变)
      解释器一定要进行配置, 否则会报错, 要指定pip对应的python解释器, 可以通过 pip -V 进行查看 pip对应的python解释器版本

      source /opt/python34/bin/virtualenvwrapper.sh # 执行virtualenvwrapper安装脚本
      无法确定virtualenvwrapper.sh路径时可以通过find 进行查找, 查找范围基本可以确定到 /home/(用户名)/ 和 /usr/

      find /usr/ -name "virtualenvwrapper.sh" -type f
      find /home/ -name "virtualenvwrapper.sh" -type f

      使用普通用户安装的一般都会在/home目录下, root用户安装的会在/usr目录下

      添加配置信息后重新加载配置文件  source ~/.bashrc

    2. 使用sudo pip list 和 pip list 查看后发现都安装了virtualenv 和 virtualenvwrapper ,切换root 用户输入find / -name "virtualenvwrapper.sh" 命令进行查找 会发现有两个查找结果.


      这是因为在bashrc配置文件中指定的python解释器与安装的virtualenvwrapper的解释器没有对应上导致的.

      解决方法:
      重新编辑配置文件内容, 修改配置信息

      可以通过一下的方法来查找虚拟环境和python解释器的对应关系:

      首先: 查看pip版本, 获取到pip对应的默认的版本
      pip -V

      可以得到到类似下面的信息 (有一些情况pip会指向python3)
      pip 19.2.3 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
      确认pip指定的是python2版本的解释器, 然后使用which python查看python的解释器路径

      然后在配置中配置python解释器和对应的virtualenvwrapper.sh

      与情况一相同, 要修改自己使用的用户对应的配置文件.

     

    • 不过当root 和 普通用户都安装虚拟环境并进行配置之后,在切换用户时可能会出现如下报错:

     

     虽然看起来是又搞砸了, 但是这个问题并不影响使用创建虚拟环境的使用, 个人不建议在root 和 普通用户下都安装虚拟环境. 

    有强迫症的同学可以自己去研究一下.

    二. 存在多个python版本, 使用虚拟环境指定版本时出错

    不同项目中可能会使用到不同的python版本,想要使用虚拟环境指定python版本创建虚拟环境时要注意:

      只需要安装一次虚拟环境, 在创建虚拟环境时通过指定python解释器的方式来创建不同python版本的虚拟环境.

     

    解决方案和问题一种的基本类似, 最主要的问题还是要让配置信息中的虚拟环境和python解释器相对应, 

     

    建议安装其他的python版本时使用编译安装, 然后在/usr/bin下创建软连接, 连接中标明安装的版本号.

     

     

    目前已知使用virtualenvwrapper过程中可能出现的错误:

    1.zlib错误

    触发错误的背景:

    使用pip3安装virtualenv 和 virtualenvwrapper , 在指定自己安装的python2.7.16为python解释器时报错,无法引入zlib模块.

    ImportError: No module named zlib

     

    解决方案:

    使用apt安装pip

    sudo apt install python-pip
    
    如果安装速度太慢可以更换apt官方源为国内源, 如ali源或者清华源. 
    但要注意要使用官方网站中提供的源,不要随便使用百度中博客中提供的源,有大概率会和你的系统版本不匹配导致更新源失败,无法下载软件

    安装成功之后,再次指定python2为解释器创建虚拟环境, 就可以成功创建.

     ----------------------------------------------------------------------------------------------------------------------------------

    如果安装了pip仍然报如上错误, 极大可能是存在多个python版本冲突. 解决版本冲突请移步

     

    2.stevedore模块错误

    触发错误的背景:

    使用python3作为解释器创建虚拟环境时,提示缺少stevedore模块

     ModuleNotFoundError: No module named 'stevedore'

     

    解决方案:

    使用pip3进行安装该模块即可

    pip3 install stevedore
    如果提示已经安装stevedore模块可以尝试卸载后再进行安装.
    要注意:
      如果同时存在pip 和 pip3 要留意,不要卸载错了

    成功安装stevedore模块之后,就可以创建虚拟环境

     

     

    欢迎指出文章中的错误和不足~~~~~

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-9-8 18:37 , Processed in 0.059452 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表