How to leave/exit/deactivate a Python virtualenv

前端 未结 13 1576
春和景丽
春和景丽 2020-11-27 08:42

I\'m using virtualenv and the virtualenvwrapper. I can switch between virtualenv\'s just fine using the workon command.

me@mymachine:~$ workon          


        
13条回答
  •  一生所求
    2020-11-27 09:32

    I had the same problem while working on an installer script. I took a look at what the bin/activate_this.py did and reversed it.

    Example:

    #! /usr/bin/python
    # -*- coding: utf-8 -*-
    import os
    import sys
    
    # Path to virtualenv
    venv_path = os.path.join('/home', 'sixdays', '.virtualenvs', 'test32')
    
    # Save old values
    old_os_path = os.environ['PATH']
    old_sys_path = list(sys.path)
    old_sys_prefix = sys.prefix
    
    
    def deactivate():
        # Change back by setting values to starting values
        os.environ['PATH'] = old_os_path
        sys.prefix = old_sys_prefix
        sys.path[:0] = old_sys_path
    
    
    # Activate the virtualenvironment
    activate_this = os.path.join(venv_path, 'bin/activate_this.py')
    execfile(activate_this, dict(__file__=activate_this))
    
    
    # Print list of pip packages for virtualenv for example purpose
    import pip
    print str(pip.get_installed_distributions())
    
    # Unload pip module
    del pip
    
    # Deactivate/switch back to initial interpreter
    deactivate()
    
    # Print list of initial environment pip packages for example purpose
    import pip
    print str(pip.get_installed_distributions())
    

    I am not 100% sure if it works as intended. I may have missed something completely.

提交回复
热议问题