前言

和其他大多数现代编程语言一样,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. php导出内容到txt并自动弹出下载文件

    php将内容保存到txt文件中,并自动弹出下载文件窗口的方法: $id=array('我爱学习网http://www.5ixuexiwang.com','汇享在线工具箱http://tool.huix ...

  2. 关于COM组件调用

    转载自:http://www.cppblog.com/ice197983/articles/4178.html 一.调用步骤: 使用ATL编写的COM组件调用方法有两种:1.导入myCom.dll文件 ...

  3. 2017人工智能元年,AI在喧嚣和质疑中一路走来

    前百度首席科学家吴恩达说:就像100年前的电力.20年前的互联网一样,AI也会改变每一个产业! 有人说,现在就像1995年,那一年,第一家互联网公司--网景上市,一天之内大涨208%,互联网正式登上历 ...

  4. visual studio 高级选项及配置

    visual studio 是一款强大的 IDE,所谓 IDE 即是将通过命令行(一系列复杂的参数选项)编译.链接等操作内置到 IDE 的界面按钮处. 为什么新建的工程,可以直接 #include & ...

  5. Convolutional Neural Networks for Visual Recognition 2

    Linear Classification 在上一讲里,我们介绍了图像分类问题以及一个简单的分类模型K-NN模型,我们已经知道K-NN的模型有几个严重的缺陷,第一就是要保存训练集里的所有样本,这个比较 ...

  6. NO3:步履蹒跚-完成第一章节学习

    第一章小记: 每个C程序都要求有一个main()函数(多于一个main()函数是不合法的(已犯错:在VS 2010一个项目里两个C文件都有main函数,不能编译通过,必须删除一个文件,永记)).mai ...

  7. ACM学习历程—HDU4415 Assassin’s Creed(贪心)

    Problem Description Ezio Auditore is a great master as an assassin. Now he has prowled in the enemie ...

  8. ASP.NET AJAX(Atlas)和Anthem.NET——管中窥豹般小小比较

    Anthem.NET近日有朋友和我提到Anthem.NET这个同样基于ASP.NET的Ajax框架,今天有机会亲自尝试了一下.初步的感觉似乎和ASP.NET AJAX不相上下,甚至某些地方要强于ASP ...

  9. 经过一年时间的沉淀 再次回首 TCP Socket服务器编程 (二)

    ------------------ 前言 ------------------ 发了第一篇文章后,有不少同志留言,看来socket编程仍然是软件系统里面一个比较难的部分. 第一篇文章主要介绍了传输协 ...

  10. EventLoop 与 Channel 的关联

    Netty 中, 每个 Channel 都有且仅有一个 EventLoop 与之关联, 它们的关联过程如下: 从上图中我们可以看到, 当调用了 AbstractChannel#AbstractUnsa ...