代码之家  ›  专栏  ›  技术社区  ›  guagay_wk

用conda forge包替换pip包的简单方法

  •  3
  • guagay_wk  · 技术社区  · 8 年前

    我在Windows10上使用Anaconda64位Pythonv3.6已经有一段时间了,但直到最近才发现conda forge。我发现我用pip安装的许多python包实际上可以在conda forge上使用。

    我想用康达锻造包代替pip包。我一直在手动做这件事,但它太乏味,因为他们是许多pip包。有没有一种简单的方法可以用conda forge包自动替换pip包,只需一个命令行?我愿意使用任何其他方便的方法,而不是手动操作。

    2 回复  |  直到 8 年前
        1
  •  2
  •   OneRaynyDay    8 年前

    除了一些bash黑客,没有其他惯用的方法来解决这个问题:

    一个问题是conda的存储库可能不够全面,并且不涵盖所有版本。假设所有版本都能工作,下面是一个简单的脚本:

    conda install $(pip freeze | sed 's/==/=/g')
    

    pip 要求 == 同时锁定版本 conda 要求 = ,很简单 sed 输入的格式正确。

    如果它不起作用,那么你必须采用风险更高的方法:

    (sandbox) ❯ for pkg in $(pip freeze | sed 's/==/=/g'); do conda install -y $pkg; done
    

    我甚至制作了一个沙箱conda环境,以防我的python出错。这会安装你所有的东西 皮普 ,如果失败(即conda repos中不存在相应的版本),则它将继续静默安装下一个包。

        2
  •  2
  •   Kota Mori    8 年前

    首先,我建议您创建环境并在其中安装库。这样,你的“基地”环境保持清洁,你可以随时回来。如果这样做,那么修复就很简单:删除包含许多pip库的环境,然后创建一个新环境重新开始。 Conda环境在这里解释 https://conda.io/docs/user-guide/tasks/manage-environments.html

    也就是说,如果您希望用conda forge中的pip库自动替换已安装的pip库,那么您可能可以使用下面的命令来执行此操作。我在bash终端上做过实验,但我想在Anaconda提示符或命令提示符下也可以做类似的操作。

    但按命令做这种事有破坏环境的危险。 要保留当前环境以备不时之需,应通过以下方式保存信息:

    conda env export > environment.yml
    

    对于实验,创建一个测试环境 pip 已安装。

    conda create -y -n testenv pip
    source activate testenv
    

    tqdm (在上提供 conda-forge janome (在conda cloud上不可用)。

    pip install tqdm janome
    

    conda list
    
    ## Name                    Version                   Build  Channel
    ca-certificates           2018.03.07                    0  
    certifi                   2018.8.13                py37_0  
    Janome                    0.3.6                     <pip>
    libedit                   3.1.20170329         h6b74fdf_2  
    libffi                    3.2.1                hd88cf55_4  
    libgcc-ng                 8.2.0                hdf63c60_1  
    libstdcxx-ng              8.2.0                hdf63c60_1  
    ncurses                   6.1                  hf484d3e_0  
    openssl                   1.0.2p               h14c3975_0  
    pip                       10.0.1                   py37_0  
    python                    3.7.0                hc3d631a_0  
    readline                  7.0                  ha6073c6_4  
    setuptools                40.0.0                   py37_0  
    sqlite                    3.24.0               h84994c4_0  
    tk                        8.6.7                hc745277_3  
    tqdm                      4.25.0                    <pip>
    wheel                     0.31.1                   py37_0  
    xz                        5.2.4                h14c3975_4  
    zlib                      1.2.11               ha838bed_2  
    

    现在,我们要执行以下操作: 对于通过 ,如果打开 康达锻造厂

    这里有个命令。。。

    for lib in `conda list | grep '<pip>' | cut -f 1 -d ' '`; \
    do 
      echo "*****checking $lib*****"; \
      conda install -y -c conda-forge $lib && \
      pip uninstall -y $lib; \
    done
    
    • 第5行:如果从conda forge安装,卸载pip one。

    conda list
    
    # Name                    Version                   Build  Channel
    ca-certificates           2018.8.13            ha4d7672_0    conda-forge
    certifi                   2018.4.16                py37_0    conda-forge
    Janome                    0.3.6                     <pip>
    libedit                   3.1.20170329         h6b74fdf_2  
    libffi                    3.2.1                hd88cf55_4  
    libgcc-ng                 8.2.0                hdf63c60_1  
    libstdcxx-ng              8.2.0                hdf63c60_1  
    ncurses                   6.1                  hf484d3e_0  
    openssl                   1.0.2o               h470a237_1    conda-forge
    pip                       10.0.1                   py37_0  
    python                    3.7.0                hc3d631a_0  
    readline                  7.0                  ha6073c6_4  
    setuptools                40.0.0                   py37_0  
    sqlite                    3.24.0               h84994c4_0  
    tk                        8.6.7                hc745277_3  
    tqdm                      4.24.0                     py_1    conda-forge
    wheel                     0.31.1                   py37_0  
    xz                        5.2.4                h14c3975_4  
    zlib                      1.2.11               ha838bed_2