V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ooleslie
V2EX  ›  Python

[再问一个关于 Anaconda 和 Pycharm 的小白问题] Pycharm 解释器配置中 virtualenv 和 conda env 的区别

  •  
  •   ooleslie · 2019-01-08 23:59:09 +08:00 · 5697 次点击
    这是一个创建于 2147 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想再请教一个关于 Pycharm 下配置 Anaconda 的问题,晚上大部分的教程都是解释在 interpreter 中选择 virtualenv,然后在 virtualenv 里面在选择 anaconda 的 python 路径,但是 pycharm 里面还有一个 Conda env,里面也可以配置,这两个环境有什么区别。
    看了 stackflow 的 https://stackoverflow.com/questions/51978816/what-is-the-difference-between-pycharm-virtual-environment-and-anaconda-environm

    里面总结到:
    To sum up:

    Conda Environment:

    - Manage not only Python packages but also different Python versions and system-wide dependencies.
    - Envs are located in user-wide directories.
    - Less envs.
    Virtualenv Environment:

    - Manage Python packages. Main purpose is to segement dependencies for every applications.
    - Envs are usually located in project-wide directories.(Although pipenv creates env in user-wide directories by
    default, many people think in project directories should be the default.)
    - Much more envs.(A new env for every application)

    不吹牛的说- -#,这里每个字我都认识。。。但是还是不太懂他们的区别,什么是 system-wide dependencies 和 applications-wide dependencies?
    10 条回复    2019-01-09 05:12:27 +08:00
    Baboonowen
        1
    Baboonowen  
       2019-01-09 00:48:28 +08:00 via Android
    帮顶
    jiangnanyanyu
        2
    jiangnanyanyu  
       2019-01-09 01:05:11 +08:00 via Android
    conda 的会带有系统相关的依赖,vir 只会有应用层面的依赖,是不是这样理解?
    ooleslie
        3
    ooleslie  
    OP
       2019-01-09 01:10:28 +08:00 via Android
    @jiangnanyanyu 能否具体说明下什么是系统相关的依赖性,单词我理解,就是不了解具体可能的情况是什么
    jiangnanyanyu
        4
    jiangnanyanyu  
       2019-01-09 01:16:57 +08:00 via Android
    @ooleslie 我这样说吧,比如这个包 pywin32 是个系统级别的依赖包,我在 pycharm 里面使用 virenv,克隆自 conda 的 python,并不会带有这个包,而我 conda 的 python 是带有 pywin32 的这个包的,但是我克隆的 virenv 选的是继承所有的包的,但是他并没有帮我把 pywin32.带上。也就是说 virenv 它克隆环境的时候,并不会克隆系统级别的包
    jiangnanyanyu
        5
    jiangnanyanyu  
       2019-01-09 01:17:44 +08:00 via Android
    我不知道这样解释正不正确,但是这是我的理解,欢迎知道的大佬探讨。
    ooleslie
        6
    ooleslie  
    OP
       2019-01-09 01:23:19 +08:00 via Android
    @jiangnanyanyu 我消化消化,谢谢
    visitant
        7
    visitant  
       2019-01-09 03:02:51 +08:00 via iPhone
    venv 出现就是为了每一个 project 都有自己独立的一系列包依赖而不影响其他 project。Anaconda 则是一个自带了很多依赖包的 python,你在 python 里选 venv,它还是会隔离所有的包,但如果你选 conda,就会继承 Anaconda 的包。我是这么理解的,不过没怎么用过 conda,不知道系统依赖是什么情况
    visitant
        8
    visitant  
       2019-01-09 03:03:27 +08:00 via iPhone
    @visitant 应该是 pycharm 里选 venv
    visitant
        9
    visitant  
       2019-01-09 03:06:25 +08:00 via iPhone   ❤️ 1
    我觉得像这种功能,应该先了解下这些软件 or 功能的本来面目,不要先用 ide,用命令行先熟悉下再用 ide 会好一些
    yuikns
        10
    yuikns  
       2019-01-09 05:12:27 +08:00
    让我帮你 google 一下: https://stackoverflow.com/questions/38217545/what-is-the-difference-between-pyenv-virtualenv-anaconda/39928067


    virtualenv 是在当前版本已有的 python 下继承基本的 binary,以及可选的一部分库,然后在用户目录安装自定义的包。

    conda 主要是严格的包管理。比如我就要版本号为 123 的那个,就是不多不少。environment.yml 定好版本,在不同的部署环境下严格一致。

    此外,anaconda 安装后,每次命令都会保存 log,你可以通过 --rev 命令回滚,还可以从 python 3.1 切换到 3.2,cuda 版本号自己随便改,gcc 也可以内部集成一个。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6008 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 03:07 · PVG 11:07 · LAX 19:07 · JFK 22:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.