美文网首页
virtualenv

virtualenv

作者: 小淼不卖萌 | 来源:发表于2018-09-02 04:22 被阅读0次

1. 背景---管理python开发环境

  • 应对不同的项目开发,需要的python解释器不同,并且需要包的版本可能也不同
  • 为了管理python的解释器环境,保证环境不被污染 不相互干扰

2. 安装

# 在安装了pip 条件下
$ pip install virtualenv

# ubuntu apt 安装
$ apt install python-virtualenv

3. virtualenv 创建区分python2, python3 环境

$ virtualenv -p python3 venvpy3
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/xxx/venvpy3/bin/python3.6
Also creating executable in /Users/xxx/venvpy3/bin/python
Installing setuptools, pip, wheel...done.

  • python3是选择创建的解释器,venvpy3是虚拟环境名称

4. 激活 & 退出

激活

$ source venvpy3/bin/activate
(venvpy3) $ python
Python 3.6.5 (default, Jun 17 2018, 12:13:06)
[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

退出

(venvpy3) $ deactivate

5. 有趣的是

$ which virtualenv
/usr/local/bin/virtualenv

$ cat /usr/local/bin/virtualenv
#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from virtualenv import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

python2 安装的 virtualenv,执行的是python2的virtualenv,安装的python3的虚拟环境


6. 移动虚拟环境文件夹后失效的解决方案

有洁癖移动了下 已创建的virtualenv python2和3环境的文件夹
移动后激活虚拟环境,python ,python3,pip,pip3环境都选择了系统默认环境下的

原因

  • source venv/venvpy2/bin/active 后,虽然进入到了虚拟环境,但是virtualenv设置的环境变量有问题,如下(已改好)


    vim active.png
  • 移动前 VIRTUAL_ENV="/Users/xxx/venv"

  • 移动到 ~/venv/venvpy2后,环境变量 VIRTUAL_ENV="/Users/xxx/venv" 找不到正确的目录
    因此执行的python, python3, pip, pip3 命令全按系统环境变量$PATH找的命令执行

解决方案

  • 如上图修改activate 的 VIRTUAL_ENV为正确的路径(修改后进入虚拟环境下,python可以找到正确的解析器)
  • 修改同目录下的pip, pip2, pip3等(保证可以包可以安装到正确的环境(具体不改会不会有影响未测试))

相关文章

网友评论

      本文标题:virtualenv

      本文链接:https://www.haomeiwen.com/subject/cnlywftx.html