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
chaleaochexist
V2EX  ›  Python

anaconda/conda 和 其他的环境管理器 譬如 virtualenv virtualwrapper pipenv pyenv 等实际区别是什么?

  •  
  •   chaleaochexist · 2018-07-23 10:56:20 +08:00 · 3117 次点击
    这是一个创建于 2342 天前的主题,其中的信息可能已经有所发展或是发生改变。
    平时时候后者,最近在自学 AI 基于 python.

    发现科学计算相关的都是用 anaconda/conda.

    好吧好吧,我没有强迫症.
    但是真的想知道他们的差别在哪里,用起来感觉一样啊,..
    11 条回复    2018-07-24 21:27:51 +08:00
    jmc891205
        1
    jmc891205  
       2018-07-23 11:20:15 +08:00
    conda 不仅是个环境管理器 还是个包管理器
    chaleaochexist
        2
    chaleaochexist  
    OP
       2018-07-23 11:30:52 +08:00
    @jmc891205 包管理器的概念类似于 pip 吗?
    所以还是没区别嘛...
    SuperMild
        3
    SuperMild  
       2018-07-23 11:31:13 +08:00   ❤️ 1
    conda 本身不依赖于 python 和 pip,因此可以先装 conda,再在 conda 里装 python,这与其他先装 python,再利用 python 来管理环境有着本质区别。毕竟,从一开始、从根本上就不依赖 python,感觉更彻底,更不容易出差错。

    不过其实都差不多,这些东西各有各的好用,都没有大问题,随便找一个用,用得爽就继续用,用不爽就换一个。

    另外,如果是用 Windows 系统,由于不用担心搞坏系统自带的 python,可以先不用环境管理器,基本上没有问题,实在遇到版本冲突再用也不迟。
    ChopinWong
        4
    ChopinWong  
       2018-07-23 12:52:10 +08:00
    科学计算表示一直不用这些。。。
    chaleaochexist
        5
    chaleaochexist  
    OP
       2018-07-23 14:08:39 +08:00
    @ChopinWong 那你用啥?还是不用?
    @SuperMild 明白你的意思,解释的非常清楚,conda 和 Python 其他管理器的区别.谢谢你.
    glasslion
        6
    glasslion  
       2018-07-23 18:38:43 +08:00   ❤️ 1
    1. conda 不仅仅是 “ Python 包管理器”,它想成为 数据科学领域各种软件的包管理。Python 本身就是一个包,可以用 conda 安装不同版本的 Python , 而 virtualenv virtualwrapper pipenv 不可以
    2. conda 流行主要是靠安装二进制包方便 。Pypi 全靠社区维护,如果包的提交者不提供 window,mac 的二进制安装包, 使用者就要自己编译, 安装就很费劲
    3. python packaging 本身就不是为二进制分发设计的.
    以 torch 为例:
    Os(Linux/Windows/Mac), Python 版本(2.7/3.5/3.6), CUDA 版本(8/9)
    那么一个 torch 版本对应的二进制版本就有 3*3*2=18 个
    pip 并没有一个机制去自动判断该安装哪个二进制包, 所以 pip 安装 pytorch tensorflow 是要靠人手动选择对应的包的
    pip3 install http://download.pytorch.org/whl/cu90/torch-0.4.0-cp35-cp35m-win_amd64.whl

    conda 把相关信息打包在了包的 metadata 里,就能自动判断了:
    conda install pytorch cuda90 -c pytorch
    chaleaochexist
        7
    chaleaochexist  
    OP
       2018-07-24 11:25:02 +08:00
    @glasslion cool!!!
    尤其第三点区别.
    chaleaochexist
        8
    chaleaochexist  
    OP
       2018-07-24 11:26:12 +08:00
    @glasslion 忽然想到一个小问题.
    如果我用 conda 管理其他包,譬如 django
    然后我想阅读 django 源码 可以实现吗?还是说默认实现不了的.,
    因为你说 conda 下载的是二进制包?
    还是我理解有误?

    希望能够得到您进一步解答.
    ChopinWong
        9
    ChopinWong  
       2018-07-24 13:38:16 +08:00   ❤️ 1
    @chaleaochexist 我就不用啊。。。而且上面的第三点其实。。。pip 本身就有 2/3 然后比如 tf 他其实就对应起来 tensorflow/ tensorflow-gpu。。。除非你要装特定版本号的
    chaleaochexist
        10
    chaleaochexist  
    OP
       2018-07-24 16:18:54 +08:00
    @ChopinWong 是否可以详细说说,省略号里面的内容,真心请教,我没明白...
    frostming
        11
    frostming  
       2018-07-24 21:27:51 +08:00   ❤️ 1
    @chaleaochexist 二进制仅对包含 C 扩展的 Python 包有区别,此时 C 写的部分会编译成.so 库文件而看不到源码

    像 Django 这种纯 Python 的包,是可以看源码的,因为 Python 是个解释型的语言。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   987 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:31 · PVG 06:31 · LAX 14:31 · JFK 17:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.