当前位置: 首页 > news >正文

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

这里将告诉您Ubuntu18.0 解决python虚拟环境中不同用户下或者python多版本环境中指定虚拟环境的使用问题,具体完成步骤:一. 不同用户下配置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.

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

在安装虚拟环境时, 可能是在使用普通用户下加了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(普通用户名)/.bashrcroot用户要在/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

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

98e3581b2bcea189a26c8d15f8a4f04d.png这是因为在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 和 普通用户都安装虚拟环境并进行配置之后,在切换用户时可能会出现如下报错:

ddc7d8de42ad7cb12cf76ed7aac528d1.png

虽然看起来是又搞砸了, 但是这个问题并不影响使用创建虚拟环境的使用, 个人不建议在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

dcec0c7d4119a84ac0b76db3fea4cf56.png

解决方案:

使用apt安装pip

sudo apt install python-pip

如果安装速度太慢可以更换apt官方源为国内源, 如ali源或者清华源.

但要注意要使用官方网站中提供的源,不要随便使用百度中博客中提供的源,有大概率会和你的系统版本不匹配导致更新源失败,无法下载软件

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

2.stevedore模块错误

触发错误的背景:

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

ModuleNotFoundError: No module named 'stevedore'

解决方案:

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

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

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

欢迎指出文章中的错误和不足~~~~~Ubuntu18.0 解决python虚拟环境中不同用户下或者python多版本环境中指定虚拟环境的使用问题就为您介绍到这里,感谢您关注懒咪学编程c.lanmit.com.

本文地址:https://c.lanmit.com/czxt/Linux/17496.html

相关文章:

  • 也要Apollo了
  • SYMANTEC病毒误报现象处理(Backdoor.haxdoor临时解决方案)
  • linux实验报告 shell,linux基本shell命令实验报告
  • Start Up a New Life
  • linux+universal-usb-installer,Universal USB Installer
  • 我的写作规划
  • 乌班图linux分辨率不能调,ubuntu不能设置高分辨率问题的解决方法,
  • 红帽子Red Hat Linux 9光盘启动安装过程图解
  • c语言指针和指针数组指针函数参数传递参数,C语言中多维数组指针作为函数参数传递...
  • C#操作XML文件
  • c语言mfc删除文件夹,C、C++和MFC中文件的读写方法
  • c语言课程设计背单词源代码,【图片】发几个C语言课程设计源代码(恭喜自己当上技术小吧主)【东华理工大学吧】_百度贴吧...
  • android 图片资源目录下,Android编程实现获取图片资源的四种方法
  • 腾王阁序
  • android xml文件读写,向android系统下sdcard中写入一个xml文件和读取一个xml文件
  • Akka系列(七):Actor持久化之Akka persistence
  • Android组件 - 收藏集 - 掘金
  • Debian下无root权限使用Python访问Oracle
  • Fundebug计费标准解释:事件数是如何定义的?
  • gitlab-ci配置详解(一)
  • go append函数以及写入
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript设计模式之工厂模式
  • laravel 用artisan创建自己的模板
  • mac修复ab及siege安装
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Vue 重置组件到初始状态
  • vue数据传递--我有特殊的实现技巧
  • 第十八天-企业应用架构模式-基本模式
  • 翻译--Thinking in React
  • 基于HAProxy的高性能缓存服务器nuster
  • 前嗅ForeSpider教程:创建模板
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 算法-图和图算法
  • ​2020 年大前端技术趋势解读
  • ​力扣解法汇总946-验证栈序列
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #include到底该写在哪
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • $(selector).each()和$.each()的区别
  • (1)Nginx简介和安装教程
  • (10)ATF MMU转换表
  • (11)MSP430F5529 定时器B
  • (26)4.7 字符函数和字符串函数
  • (a /b)*c的值
  • (c语言)strcpy函数用法
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (六)Hibernate的二级缓存
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (四)linux文件内容查看
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)Unity3DUnity3D在android下调试