Using conda install within a python script

前端 未结 6 1923
后悔当初
后悔当初 2021-02-04 02:13

According to this answer you can import pip from within a Python script and use it to install a module. Is it possible to do this with conda install?

The co

6条回答
  •  醉酒成梦
    2021-02-04 02:40

    I was looking at the latest Conda Python API and noticed that there are actually only 2 public modules with “very long-term stability”:

    1. conda.cli.python_api
    2. conda.api

    For your question, I would work with the first:

    NOTE: run_command() below will always add a -y/--yes option (i.e. it will not ask for confirmation)

    import conda.cli.python_api as Conda
    import sys
    
    ###################################################################################################
    # The below is roughly equivalent to:
    #   conda install -y 'args-go-here' 'no-whitespace-splitting-occurs' 'square-brackets-optional'
    
    (stdout_str, stderr_str, return_code_int) = Conda.run_command(
        Conda.Commands.INSTALL, # alternatively, you can just say "install"
                                # ...it's probably safer long-term to use the Commands class though
                                # Commands include:
                                #  CLEAN,CONFIG,CREATE,INFO,INSTALL,HELP,LIST,REMOVE,SEARCH,UPDATE,RUN
        [ 'args-go-here', 'no-whitespace-splitting-occurs', 'square-brackets-optional' ],
        use_exception_handler=True,  # Defaults to False, use that if you want to handle your own exceptions
        stdout=sys.stdout, # Defaults to being returned as a str (stdout_str)
        stderr=sys.stderr, # Also defaults to being returned as str (stderr_str)
        search_path=Conda.SEARCH_PATH  # this is the default; adding only for illustrative purposes
    )
    ###################################################################################################
    
    


    The nice thing about using the above is that it solves a problem that occurs (mentioned in the comments above) when using conda.cli.main():

    ...conda tried to interpret the comand line arguments instead of the arguments of conda.cli.main(), so using conda.cli.main() like this might not work for some things.


    The other question in the comments above was:

    How [to install a package] when the channel is not the default?

    import conda.cli.python_api as Conda
    import sys
    
    ###################################################################################################
    # Either:
    #   conda install -y -c  
    # Or (>= conda 4.6)
    #   conda install -y ::
    
    (stdout_str, stderr_str, return_code_int) = Conda.run_command(
        Conda.Commands.INSTALL,
        '-c', '',
        ''
        use_exception_handler=True, stdout=sys.stdout, stderr=sys.stderr
    )
    ###################################################################################################
    
    

提交回复
热议问题