python虚拟环境virtualenv、virtualenv下运行IDLE、powershell 运行脚本由执行策略引起的问题
一、为什么要创建虚拟环境:
应为在开发中会有同时对一个包不同版本的需求,创建多个开发环境就能解决这个问题。或许也会有对python不同版本的需求,这就需要使用程序来管理不同的版本,virtualenv与virtualenvwrapper就好比能创造出来一个一个的独立容器,各个容器之间互不干扰,所以我们就可以在每个容器中安装我们需要的依赖包
虚拟环境是Python解释器的一个私有的副本,在这个环境中你可以安装私有包,而且不会影响系统中安装的全局Python解释器。虚拟环境非常的有用,可以在系统中Python解释器中避免包的混乱和版本的冲突。为每个程序单独创建虚拟环境可以保证程序只能访问虚拟环境中的包,从而保持全局解释器的干净简洁,使其只作为(更多)虚拟环境的源。
二、virtualenv 与 virtualenvwrapper-win
virtualenvwrapper-win可以看做是对virtualenv的优化,前者可以让你省去操心虚拟环境存放在不同的文件夹下带来的管理问题,注意必须在virtualenv安装成功的基础上安装
安装virtualenv
$ pip install virtualenv
等待一会出现successfully...就说明成功了
virtualenv使用步骤命令
#先使用cd命令进入到你要虚拟环境存放的目录 cd操作方法见:https://www.cnblogs.com/Gaoqiking/p/10528079.html
$ cd C:\Users\Administrator.SC-22\AppData\Local\Programs\Python\Python37\virtual_environment
$ virtualenv envname #创建一个虚拟环境,envname为环境名,也是创建的文件夹名
#然后你需要进入上名新创建的文件夹下的scripts文件夹
$ cd envaname/scripts #也可以以绝对目录进去
$ cd cd C:\Users\Administrator.SC-22\AppData\Local\Programs\Python\Python37\virtual_environmentenvaname/scripts #这是绝对目录,下次你可以直接这样进入
$ activate #激活 实际上是执行scripts里面的activate.bat
当成功激活后会显示虚拟环境名(powershell有些麻烦我认为),你不用关注我为什么后面有一个 (拉姆他符号)
在虚拟环境中使用IDLE
当我们创建了虚拟环境后,若是正常打开IDLE,是无法访问虚拟环境里面的包的,需要在命令行里输入
$ python -m idlelib.idle #注意,需要当前的虚拟空间已经激活
-m是将库中的模块当做脚本去运行
我们还可以只在IDLE里编辑,然后运行的时候不按F5而是用命令行运行程序
(envs)C:\Users\Administrator.SC-> python ./envs/web_go/server.py #注意路径
virtualenv关闭虚拟环境
$ deactivate
—system-site-packages 参数
使用这个参数创建的隔离环境能让你直接引用 /usr/lib/python2.7/site-packages (即本机全局site-package目录)中的依赖包,只在拥有全局site-packages目录的读写权限,并且你的应用要依赖其中的模块的情况下,该参数会很有用。其他情况下没必要使用该参数
virtualenv --system-site-packages -p python3 ./venv #-p为指定解释器所用的版本
至此,我们就成功创建了一个虚拟环境,里面只有一些必须的头文件,我们就可以安装我们需要的依赖包了不过如果想让使用体验更完美,我们还可以选择virtualenvwrapper-win
安装virtualenvwrapper-win(注意不是virtualenvwrapper)
$ pip install virtualenvwrapper-win
创建虚拟环境
完成后会自动进入,且不需要像virtualenv一样先指定文件夹(如果不指定会存在当前目录下),这个可以直接运行命令,虚拟环境会被存放在一个固定的文件夹(见下图框选)
$ mkvirtualenv envname
配置
假如你想改变存放的文件夹,你要配置系统环境变量(注意是新建系统变量)
通过设置系统变量“WORKON_HOME”,我们就为virtualenvwrapper-win创建的虚拟环境重新制定了存放目录,你可以将原有的文件拷贝过去
使用workon 命令进入虚拟环境
$ workon envname # 进入虚拟环境名为envname $workon #会显示所有的虚拟环境
退出
$ deactivate
三、更多信息与参考经验
virtualenv中文文档:https://www.bookstack.cn/read/virtualenv-zh/date-2018.08.27.08.08.23
https://blog.csdn.net/godot06/article/details/81079064
https://www.cnblogs.com/cwp-bg/p/python.html
四、遇到问题
问题:Suggestion [3,General]: 找不到命令 activate,但它确实存在于当前位置。默认情况下,Windows PowerShell 不会从当前位置加载命令。如果信任此命令,请改为键入“.\activate”。有关详细信息,请参阅 "get-help about_Command_Precedence"。
解决办法:按照提示“改为键入.\activate”后又出现另外错误:
问题:.\activate : 无法加载文件 C:\Users\Administrator.SC-2002132\AppData\Local\Programs\Python\Python37\virtual_environment\.virtualenvs\envname\scripts\activate.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
解决办法:认真阅读提示,进入提示网站,发现是执行策略问题,有几个解决办法
一是可以执行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser RemoteSigned是执行策略, CurrentUser是策略作用域,,这些都可以在网站上找到解释
二是可以直接复制脚本内容进去执行
三是可以选用cmd来运行
四是气运丹田,大喊一声“妈”,或者关机解决
python虚拟环境virtualenv、virtualenv下运行IDLE、powershell 运行脚本由执行策略引起的问题的更多相关文章
- (zhuan)Python 虚拟环境:Virtualenv
Python 虚拟环境:Virtualenv zhuanzi: http://liuzhijun.iteye.com/blog/1872241 virtualenv virtualenv用于创建独立的 ...
- Python 虚拟环境 | Mac/Linux下如何避坑安装配置Virtualenv
1.为什么要使用虚拟环境 在Python中,不同的应用可能需要用到不同版本的第三方包,而这些第三方包被统一存放到目录site-packages中,不同版本的包容易相互覆盖,如安装Django 2.1时 ...
- python——虚拟环境之virtualenv(windows10,64位)
1 问题 当我们拥有两个甚至多个项目A.B.C......,各个项目正常运行需求的python运行环境都不相同.而默认情况下,不管哪个项目,使用的都是全局的Python环境.上述情况,造成的问题就是, ...
- python 虚拟环境操作 virtualenv +virtualenvwrapper
Window 下创建python的虚拟环境 下载工具 pip install virtualenv 创建虚拟环境目录 # 注意此命令创建的虚拟环境目录是在当前目录下 virtualenv testen ...
- Python虚拟环境工具-Virtualenv 介绍及部署记录
在开发Python应用程序时,系统默认的Python版本可能会不兼容这个应用程序, 如果同时开发多个应用程序, 可能会用到好几个版本的python环境, 这种情况下,每个应用可能需要各自拥有一套&qu ...
- Python虚拟环境 之 virtualenv 与 virtualenvwrapper
在开发Python应用程序的时候,比如系统安装的Python3只有一个版本:3.6.所有第三方的包都会被 pip 安装到Python3的 site-packages 目录下. 如果我们要 ...
- Python虚拟环境(virtualenv)
python虚拟环境 虚拟环境:一个独立的可以运行的python执行环境,可以创建多个,且相互之间互不影响 使用virtualenv库 pip install virtualenv 用法 # 创建虚拟 ...
- python虚拟环境配置(下)
前言 嘿,各位小伙伴们,晚上好呀,新年快乐,注意预防流感哈,就不要出去浪了,万一中奖了,嗯...,还是当个宅男,宅男无敌,哈哈哈, 过年了,村都被封了,哎,出都出不去,想着干点啥,就把以前没完善的继续 ...
- Linux下的Source命令及脚本的执行方式解析
Linux Source命令及脚本的执行方式解析 http://blog.csdn.net/wangyangkobe/article/details/6595143 当我修改了/etc/profile ...
随机推荐
- 模仿百度首页“元宵节汤圆”动图,并实现360°不停旋转(CSS3的animation动画效果)
模仿百度首页“元宵节汤圆”动图,并实现360°不停旋转(CSS3的animation动画效果) 效果图: 切图地址: https://ss1.bdstatic.com/5eN1bjq8AAUYm2zg ...
- LeetCode(10)Regular Expression Matching
题目如下: Python代码: # -*- coding:utf-8 -*- def ismatch(s,p): #先将dp[s+1][p+1]二维数组全置为False dp = [[False] * ...
- 关于深度残差网络(Deep residual network, ResNet)
题外话: From <白话深度学习与TensorFlow> 深度残差网络: 深度残差网络的设计就是为了克服这种由于网络深度加深而产生的学习效率变低,准确率无法有效提升的问题(也称为网络退化 ...
- form表单里的坑
我们在写前端表单页面的时候,为了更好的SEO,我们会使用form标签,但是我们经常的情况是:我们并不需要form标签的一些默认事件,比如: 1.form内只有一个input标签的话,回车会触发表单的提 ...
- CSS3新增的属性有哪些:
CSS 用于控制网页的样式和布局. CSS3 是最新的 CSS 标准. CSS3新增了很多的属性,下面一起来分析一下新增的一些属性: 1.CSS3边框: border-radius:CSS3圆角边框. ...
- [AHOI2013]作业 莫队 树状数组
#include<cmath> #include<cstdio> #include<algorithm> #include<string> #inclu ...
- [APIO2016]Gap
题目:UOJ#206. 题目大意:由于过于冗长,不好解释,所以详见原题. 解题思路:这是一道交互题. 对于第一问,很容易解决.由于数列严格递增,所以不会出现相等的情况. 首先调用MinMax(0,10 ...
- C语言Huffman压缩和解压
符号表结构体: struct node { // 字符串形式存储的Huffman编码 char code[MAX_CODE_LENGTH]; // 这个字符在文件中出现的次数 long count; ...
- 【BZOJ 1196】[HNOI2006]公路修建问题
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 二分最后选的边中的最大值是多少. mid 则所有边权小于等于mid的边都可以用了. 那么我们要怎么选择呢? ->优先选择一级的 ...
- Linux学习总结(12)——Linux必须学会的60个命令
Linux系统信息存放在文件里,文件与普通的公务文件类似.每个文件都有自己的名字.内容.存放地址及其它一些管理信息,如文件的用户.文件的大小等. 文件可以是一封信.一个通讯录,或者是程序的源语句.程序 ...