segmentfault.com /q/1010000011446212

conda create 怎么创建纯净的 Python3.6 环境?

4-5 minutes

刚接触 conda,安装了 Anaconda3,想用 conda create 命令创建一个只含标准模块和几个必需第三方模块(如 pip、wheel)的 Python3.6 环境。
使用命令:

conda create -n test python=3.6

然而在运行后确认安装模块阶段显示创建的环境中会有很多我觉得完全不需要的模块
如下:

Fetching package metadata .............
Solving package specifications: .

Package plan for installation in environment D:\Anaconda3\envs\test:

The following NEW packages will be INSTALLED:

    asn1crypto:      0.22.0-py36h8e79faa_1      defaults
    ca-certificates: 2017.08.26-h94faf87_0      defaults
    cachecontrol:    0.12.3-py36hfe50d7b_0      defaults
    certifi:         2017.7.27.1-py36h043bc9e_0 defaults
    cffi:            1.10.0-py36hae3d1b5_1      defaults
    chardet:         3.0.4-py36h420ce6e_1       defaults
    colorama:        0.3.9-py36h029ae33_0       defaults
    cryptography:    2.0.3-py36h123decb_1       defaults
    distlib:         0.2.5-py36h51371be_0       defaults
    html5lib:        0.999999999-py36ha09b1f3_0 defaults
    idna:            2.6-py36h148d497_1         defaults
    lockfile:        0.12.2-py36h0468280_0      defaults
    msgpack-python:  0.4.8-py36h58b1e9d_0       defaults
    openssl:         1.0.2l-vc14hcac20b0_2      defaults [vc14]
    packaging:       16.8-py36ha0986f6_1        defaults
    pip:             9.0.1-py36hadba87b_3       defaults
    progress:        1.3-py36hbeca8d3_0         defaults
    pycparser:       2.18-py36hd053e01_1        defaults
    pyopenssl:       17.2.0-py36h15ca2fc_0      defaults
    pyparsing:       2.2.0-py36h785a196_1       defaults
    pysocks:         1.6.7-py36h698d350_1       defaults
    python:          3.6.2-h09676a0_15          defaults
    requests:        2.18.4-py36h4371aae_1      defaults
    setuptools:      36.5.0-py36h65f9e6e_0      defaults
    six:             1.10.0-py36h2c0fdd8_1      defaults
    urllib3:         1.22-py36h276f60a_0        defaults
    vc:              14-h2379b0c_1              defaults
    vs2015_runtime:  14.0.25123-hd4c4e62_1      defaults
    webencodings:    0.5.1-py36h67c50ae_1       defaults
    wheel:           0.29.0-py36h6ce6cde_1      defaults
    win_inet_pton:   1.0.1-py36he67d7fd_1       defaults
    wincertstore:    0.2-py36h7fe50ca_0         defaults

Proceed ([y]/n)?

确认将安装的模块中有很多 web 开发的模块,我完全用不到,怎么取消安装这些多余的模块?
我发现只有在创建 Python2.7、3.5、3.6 时会有多余的模块,而在创建其他 Python 版本(如3.4、2.6)环境时则不会出现这种情况:

C:\Users\Drake> conda create -n test python=3.4

Fetching package metadata .............
Solving package specifications: .

Package plan for installation in environment D:\Anaconda3\envs\test:

The following NEW packages will be INSTALLED:

    pip:            9.0.1-py34_1    defaults
    python:         3.4.5-0         defaults
    setuptools:     27.2.0-py34_1   defaults
    vs2010_runtime: 10.00.40219.1-2 defaults
    wheel:          0.29.0-py34_0   defaults
unintuition
Proceed ([y]/n)?

所以怎样才能用 conda 创建干净的 Python3.6 环境?

Update:
在 hezhiming 的提示下,经过阅读 conda 官方文档中的 管理环境包安装参数 后,我找到了解决方法。

conda create --name myenv --file environment.txt

使用 --file FILE 参数指定安装包,本来想省事用 .yml 文件,但是发现依然会有多余模块安装,所以只用 .txt 文件,文件格式:

@EXPLICIT
https://repo.continuum.io/pkgs/free/osx-64/python-3.5.2-0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/pip-8.1.2-py35_0.tar.bz2

上面的链接都是Anaconda镜像列表上的源码包,使用该文件创建环境表示只下载安装文件中的包,不会有任何其他动作。
至此,安装干净的Python环境就完成了。
不过,在创建环境后,在新环境内如果使用 conda install 任何模块时,conda 会自动检测你没有安装哪些 conda 默认安装的环境包并自动加入安装。
所以在创建后的新环境中如果想一直完全由自己控制模块的安装,最好使用 pip,而且Anaconda镜像列表中的包比较少,也不如 pip 能装得多。

总结:安装 Anaconda 后如果想创建干净的 Python 环境,就使用 conda 导入文件安装环境,创建后使用 pip 安装其他需求的模块。
感谢所有回答的人。

::...
免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

或是邮件反馈可也:
askdama[AT]googlegroups.com


订阅 substack 体验古早写作:


点击注册~> 获得 100$ 体验券: DigitalOcean Referral Badge

关注公众号, 持续获得相关各种嗯哼:
zoomquiet


自怼圈/年度番新

DU22.4
关于 ~ DebugUself with DAMA ;-)
粤ICP备18025058号-1
公安备案号: 44049002000656 ...::