今天,在在使用 pycharm 的使用,进行创建 python的时候,发现使用默认的创建的选项使用的python 3环境 。而我系统默认的python环境是 python 2.7 环境;这就引起了我的兴趣。

我打开pycharm 的终端,发现:

前面 有个 venv 参数,通过 调研了一番我发现:python 的 venv 模块可以创建一个独立的虚拟的python运行环境,这样就和系统的python独立开来了。而我使用fedora 28的系统,默认安装了python2.7 和 python3.6 两种python环境。

我们使用 python 内置的文档查看,venv 相关,其描述为:

Help on package venv:

NAME
venv - Virtual environment (venv) package for Python. Based on PEP .

我们使用python3 查看 venv 模块的使用方法:

➜  env pwd
/home/xuyaowen/Desktop/workplace/env
➜ env python3 -m venv -h
usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear]
[--upgrade] [--without-pip] [--prompt PROMPT]
ENV_DIR [ENV_DIR ...] Creates virtual Python environments in one or more target directories. positional arguments:
ENV_DIR A directory to create the environment in. optional arguments:
-h, --help show this help message and exit
--system-site-packages
Give the virtual environment access to the system
site-packages dir.
--symlinks Try to use symlinks rather than copies, when symlinks
are not the default for the platform.
--copies Try to use copies rather than symlinks, even when
symlinks are the default for the platform.
--clear Delete the contents of the environment directory if it
already exists, before environment creation.
--upgrade Upgrade the environment directory to use this version
of Python, assuming Python has been upgraded in-place.
--without-pip Skips installing or upgrading pip in the virtual
environment (pip is bootstrapped by default)
--prompt PROMPT Provides an alternative prompt prefix for this
environment. Once an environment has been created, you may wish to activate it, e.g. by
sourcing an activate script in its bin directory.

通过上面的介绍,我们大致知道 venv 的模块使用方法:

首先我们创建虚拟环境:

➜  venvtest pwd
/home/xuyaowen/Desktop/workplace/venvtest
➜ venvtest python3 -m venv .

我们查看创建的结果:

➜  venvtest ls
bin include lib lib64 pyvenv.cfg
➜ venvtest ll *
lrwxrwxrwx. xuyaowen xuyaowen Jul : lib64 -> lib
-rw-r--r--. xuyaowen xuyaowen Jul : pyvenv.cfg bin:
total 32K
-rw-r--r--. xuyaowen xuyaowen .2K Jul : activate
-rw-r--r--. xuyaowen xuyaowen .3K Jul : activate.csh
-rw-r--r--. xuyaowen xuyaowen .4K Jul : activate.fish
-rwxr-xr-x. xuyaowen xuyaowen Jul : easy_install
-rwxr-xr-x. xuyaowen xuyaowen Jul : easy_install-3.6
-rwxr-xr-x. xuyaowen xuyaowen Jul : pip
-rwxr-xr-x. xuyaowen xuyaowen Jul : pip3
-rwxr-xr-x. xuyaowen xuyaowen Jul : pip3.
lrwxrwxrwx. xuyaowen xuyaowen Jul : python -> python3
lrwxrwxrwx. xuyaowen xuyaowen Jul : python3 -> /usr/bin/python3 include:
total lib:
total .0K
drwxr-xr-x. xuyaowen xuyaowen .0K Jul : python3.

我们当前 产生了很多虚拟环境相关的文件:

../venvtest
├── bin
│   ├── activate 用来激活虚拟环境
│   ├── activate.csh
│   ├── activate.fish
│   ├── easy_install
│   ├── easy_install-3.6
│   ├── pip
│   ├── pip3
│   ├── pip3.
│   ├── python -> python3
│   └── python3 -> /usr/bin/python3
├── include
├── lib
│   └── python3.
│   └── site-packages
├── lib64 -> lib
└── pyvenv.cfg

默认情况下,是创建 一个全新的python执行环境,并包含pip命令,当你激活虚拟环境后,我们可以 使用 pip 安装我们需要的第三方包并且新安装的包不在系统中出现。下面我们进行激活环境:

➜  venvtest source ./bin/activate
(venvtest) ➜ venvtest

前面出现 虚拟环境的名称,说明我们环境激活成功,这时候我们再进行运行python :

(venvtest) ➜  venvtest python -V
Python 3.6.

可以发现,此时我们的python的环境为 3.6.5, 虚拟环境运行成功。当然你也可以在创建虚拟环境的时候使用 --system-site-packages 选项,来让虚拟环境使用系统的已经安装的包。

我们进一步阅读 activate 脚本:

(venvtest) ➜  bin cat activate | head -n
# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly

你会发现,它前两行说明,你只能使用 source 命令来激活它。

好了,到这里大致会使用 venv 模块了。希望你使用愉快。

保持更新,转载请注明出处。



python 3.6 的 venv 模块的更多相关文章

  1. Windows下用Python 3.4+自带的venv模块创建虚拟环境

    Python 3.4+自带了venv模块,用于创建虚拟环境,每个虚拟环境都可以安装一套独立的第三方模块. 本文在Windows 10上操作. 1.创建一个虚拟环境: D:\>mkdir test ...

  2. Python学习笔记十_模块、第三方模块安装、模块导入

    一.模块.包 1.模块 模块实质上就是一个python文件.它是用来组织代码的,意思就是把python代码写到里面,文件名就是模块的名称,test.py test就是模块的名称 2.包 包,packa ...

  3. Python全栈day21-22-23(模块)

    一,python的模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...

  4. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

  5. Python 学习笔记(6)--常用模块(2)

    一.下载安装 下载安装有两种方式: yum\pip\apt-get 或者源码 下载源码 解压源码 进入目录 编译源码 python setup.py build 安装源码 python setup.p ...

  6. python学习笔记之常用模块(第五天)

    参考老师的博客: 金角:http://www.cnblogs.com/alex3714/articles/5161349.html 银角:http://www.cnblogs.com/wupeiqi/ ...

  7. Python 之路 Day5 - 常用模块学习

    本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...

  8. Python导入自定义包或模块

    一般我们会将自己写的 Python 模块与 Python 自带的模块分开存放以达到便于维护的目的. Python 运行环境在查找模块时是对 sys.path 列表进行遍历,如果我们想在运行环境中添加自 ...

  9. python几个重要的模块备忘

    一:模块使用方法 二:时间模块time 三:系统接口模块os和sys 四:数据保存的几个模块json,pickle,xml,configparse 五:数据复制移动模块shutil 六:日志模块log ...

随机推荐

  1. Spring Log4j2 log4j2.xml

    <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-c ...

  2. spark work目录处理 And HDFS空间都去哪了?

    1.说在前面 过完今天就放假回家了(挺高兴),于是提前检查了下个服务集群的状况,一切良好.正在我想着回家的时候突然发现手机上一连串的告警,spark任务执行失败,spark空间不足.我的心突然颤抖了一 ...

  3. java 跨域-利用jsonp

    Tomcat在 7.0.73, 8.0.39, 8.5.7 版本之前的可以用,不然后台报错 /** * 前端首页跳转后台 */ @RequestMapping("WebIndex.get&q ...

  4. Css中display:inline-block用法详解

    display:block就是将元素显示为块级元素 block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div&g ...

  5. 2.logback+slf4j+janino 配置项目的日志输出

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.创建项目 参考:http://www.cnblogs.com/yysbolg/p/6898453.html 2 ...

  6. Javascript 随机数函数 学习之二:产生服从正态分布随机数

    一.为什么需要服从正态分布的随机函数 一般我们经常使用的随机数函数 Math.random() 产生的是服从均匀分布的随机数,能够模拟等概率出现的情况,例如 扔一个骰子,1到6点的概率应该相等,但现实 ...

  7. js-ES6学习笔记-字符串的扩展

    1.codePointAt方法是测试一个字符由两个字节还是由四个字节组成的最简单方法.codePointAt方法会正确返回32位的UTF-16字符的码点. function is32Bit(c) { ...

  8. idea中连接oracle数据库打包

    问题:在使用idea连接oracle数据时发现oracle.jdbc.OracleDriver引用这个包报错,找不到包.解决方法:在idea的terminal命令框中输入如下命令.我的jar包的位置在 ...

  9. JS 显示隐藏DIV

    JS关闭DIV HTML <div id="bar1"> <p onclick="removeElement('bar1')">关闭&l ...

  10. CSS布局之——对齐方式

    一.水平居中: (1). 行内元素的水平居中? 如果被设置元素为文本.图片等行内元素时,在父元素中设置text-align:center实现行内元素水平居中,将子元素的display设置为inline ...