前言

和其他大多数现代编程语言一样,Python对包和 模块的下载、存储以及管理有其自己的一套方法。但是当我们同时开发多个项目工程的时候,不同的项目会将第三方的包存放在相同的路径下。这就意味着,如果有两个工程依赖同一个包,但是所需要的版本却不一样,比如项目A依赖v1.0.0,而项目B依赖v2.0.0。由于Python无法根据版本来区分包的安装路径,那么此时,就会发生版本冲突。


简介

本文会从

virtualenvwrapper(virtualenv的进阶版,其提供了一系列命令使得和虚拟环境工作变得便利。)

pipenv

anaconda

三个常用的Python虚拟环境配置来汇总,如有不适之处,还望各位大佬指正。

另:

  • 博客撰写以windows操作系统为基础(囊中羞涩),后续有Money后,会更新其他系统的操作。
  • 项目使用Python版本为3.7.3

virtualenvwrapper

安装

pip install virtualenvwrapper
pip install virtualenvwrapper-win  #Windows使用该命令

路径

详见下图指引(从左至右,依次操作)

使用

  1. 创建虚拟环境

    mkvirtualenv test_env
  2. 查看所有的虚拟环境

    workon
  3. 使用虚拟环境

    workon test_env
  4. 退出虚拟环境

    deactivate
  5. 删除虚拟环境

    rmvirtualenv test_env

pipenv

一个好的程序员,果断必须熟练阅读各种文档,源码。追根溯源方能获取真知!

强烈推荐:pipenv文档

特性

  1. pipenv集成了pip,virtualenv两者的功能,且完善了两者的一些缺陷。
  2. pipenv使用Pipfile和Pipfile.lock,查看包的依赖关系十分方便。
  3. Pipfile 文件是 TOML 格式而不是 requirements.txt 这样的纯文本。一个项目对应一个 Pipfile,支持开发环境与正式环境区分。

安装

pip install pipenv

使用

常用命令大全:

pipenv --where                 列出本地工程路径
pipenv --venv 列出虚拟环境路径
pipenv --py 列出虚拟环境的Python可执行文件
pipenv install 创建虚拟环境
pipenv isntall [moduel] 安装包
pipenv install [moduel] --dev 安装包到开发环境
pipenv uninstall[module] 卸载包
pipenv uninstall --all 卸载所有包
pipenv graph 查看包依赖
pipenv lock 生成lockfile
pipenv run python [pyfile] 运行py文件
pipenv --rm 删除虚拟环境

备注:直接在项目根目录下,使用pipenv install xxx即可创建项目环境,并安装xxx包


anaconda

Anaconda 是一个包含数据科学常用包的 Python 发行版本。其使用 conda 创建环境,以便分隔使用不同 Python 版本和不同程序包的项目。

特性

  1. pip仅适用于Python,conda适用于Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++等语言
  2. conda结合了pip和virtualenv的功能。
  3. pip在系统自带Python中,包的**更新/回退版本/卸载将影响其他程序;而conda不会影响系统自带Python。

安装

此处跳过安装anaconda,如有需要可参考anaconda安装、介绍、使用

使用

  1. 验证conda已被安装

    conda --version
  2. 创建新环境
conda create --name <env_name> <package_names>
#示例:
conda create --n test_conda_env

注意:

<env_name>即创建的环境名。建议以英文命名,且不加空格,名称两边不加尖括号“<>”。

如果要安装指定的版本号,则只需要在包名后面以=和版本号的形式执行。如:conda create --name python2 python=2.7,即创建一个名为“python2”的环境,环境中安装版本为2.7的python。

如果要在新创建的环境中创建多个包,则直接在<package_names>后以空格隔开,添加多个包名即可。如:conda create -n python3 python=3.5 numpy pandas,即创建一个名为“python3”的环境,环境中安装版本为3.5的python,同时也安装了numpy和pandas。

  1. 查看所有的环境

    conda info --env
  2. 管理和使用环境

    activate test_conda_env
  3. 退出环境

    deactivate
  4. 删除环境(不要乱搞事情)

    conda remove -n test_conda_env --all

ok,这篇关于如何创建Python项目环境的文章就暂时先告一段落。

初写博客,当然会有很多不足之处,如有错误遗漏的地方呢,还请各位老少爷们儿多多指教。

Python小世界:项目虚拟环境配置的N种方法的更多相关文章

  1. Python中模拟enum枚举类型的5种方法分享

    这篇文章主要介绍了Python中模拟enum枚举类型的5种方法分享,本文直接给出实现代码,需要的朋友可以参考下   以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码代码如下: # way1 ...

  2. Python执行系统命令并获得输出的几种方法

    [root@a upfc]# ./ffmpeg-linux64-v3.3.1 -i a.mp3 ffmpeg version N-86111-ga441aa90e8-static http://joh ...

  3. Python+Selenium自动化-定位页面元素的八种方法

    Python+Selenium自动化-定位页面元素的八种方法   本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子. 0.元素定位方法主要有: id定位:find_elemen ...

  4. python项目实现配置统一管理的方法

    一个比较大的项目总是会涉及到很多的参数,最好的方法就是在一个地方统一管理这些参数.最近看了不少的python项目,总结了两种很有意思的配置管理方法. 第一种 基于easydict实现的配置管理 首先需 ...

  5. env虚拟环境配置(两种)

    virtualenv(依赖关系难以解决) windows项目虚拟环境创建 # WINDOWS 环境使用虚拟环境# 在当前项目下# 安装 pip3 install virtualenv# 创建虚拟环境 ...

  6. web项目docker化的两种方法

    标题所讲的两种方法其实就是创建docker镜像的两种方法 第一种:启动镜像后进入容器中操作,将需要的软件或者项目移动到容器中,安装或者部署,然后退出即可 第二种:编写dockerfile,将需要的镜像 ...

  7. Python并发编程之创建多线程的几种方法(二)

    大家好,并发编程 进入第二篇. 今天的内容会比较基础,主要是为了让新手也能无障碍地阅读,所以还是要再巩固下基础.学完了基础,你们也就能很顺畅地跟着我的思路理解以后的文章. 本文目录 学会使用函数创建多 ...

  8. 创建一个 Spring Boot 项目,你会几种方法?

    我最早是 2016 年底开始写 Spring Boot 相关的博客,当时使用的版本还是 1.4.x ,文章发表在 CSDN 上,阅读量最大的一篇有 42W+,如下图: 2017 年由于种种原因,就没有 ...

  9. 【Java】java数据库连接池配置的几种方法

    今天遇到了关于数据源连接池配置的问题,发现有很多种方式可以配置,现总结如下,希望对大家有所帮助:(已Mysql数据库为例) 一,Tomcat配置数据源: 方式一:在WebRoot下面建文件夹META- ...

随机推荐

  1. STL stl_uninitialized.h

    stl_uninitialized.h // Filename: stl_uninitialized.h // Comment By: 凝霜 // E-mail: mdl2009@vip.qq.com ...

  2. stl_queue.h

    stl_queue.h // Filename: stl_queue.h // Comment By: 凝霜 // E-mail: mdl2009@vip.qq.com // Blog: http:/ ...

  3. LeetCode Majority Element I

    原题链接在这里:https://leetcode.com/problems/majority-element/ 题目: Given an array of size n, find the major ...

  4. How to manage concurrency in Django models

    How to manage concurrency in Django models The days of desktop systems serving single users are long ...

  5. 系列文章--突袭HTML5之Javascript

    突袭HTML5之Javascript API扩展5 - 其他扩展 突袭HTML5之Javascript API扩展4 - 拖拽 突袭HTML5之Javascript API扩展3 - 本地存储 突袭H ...

  6. NSArray用法

    //类方法初始化一个数组对象 [array count] : 得到这个数组对象的长度. [array objectAtIndex index]: 传入数组的索引(index) 得到数据对象. [arr ...

  7. android获取时间差的方法

    本文实例讲述了android获取时间差的方法.分享给大家供大家参考.具体分析如下: 有些时候我们需要获取当前时间和某个时间之间的时间差,这时如何获取呢? 1. 引用如下命名空间: import jav ...

  8. Python:更改字典的key

    思路:先删除原键值对,保存值,然后以新键插入字典 格式:dict[newkey] = dict.pop(key) d = {'a':1, 'aa':11} d['b'] = d.pop('a') d[ ...

  9. 7.JasperReports学习笔记7-applet打印

    转自:http://www.blogjava.net/vjame/archive/2013/10/12/404908.html 打包applet的class和所需的jar包,并加上数字签名 要运行打印 ...

  10. Java探索之旅(12)——equals方法及其覆盖

    1.Object中的equals方法 java中的的基本数据类型:byte,short,char,int,long,float,double,boolean.==比较的是值. ❶作用:对于复合类型来说 ...