V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
char1998
V2EX  ›  Python

Virtualenv 的理解和使用

  •  
  •   char1998 · 2017-04-13 15:33:03 +08:00 · 6320 次点击
    这是一个创建于 2770 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用virtualenv(虚拟化)进行项目管理

    virtualenv:可以创建一个单独的虚拟环境,安装私有包,而不会污染全局环境,它让你的电脑从项目目录而不是系统全局的python主目录下查找和安装包。 使用virtualenv步骤如下(已经在Linux(ubuntu)上操作过,window还未实践):

    1.虚拟环境使用第三方实用工具virtualenv创建,可以输入以下命令可以检查系统是否安装了virtualenv:

        virtualenv  --version
    

    如果结果显示错误,那么你就需要安装这个工具

    注意python3.3通过 venv 模块原生支持虚拟环境,命令为pyvenvpyvenv可以替代virtualenv。不过要注意,在python3.3中使用pyvenv命令创建的虚拟环境不包括pip,你需要手动安装。python3.4改进了这一缺陷,pyvenv完全可以替代virtualenv

    1. 大多数的 Linux 发行版都提供了virtualenv,例如 linux 用户可以使用下述命令安装
      sudo apt-get install python-virtualenv 或 pip install virtualenv
      
      如果你的电脑是 Mac OS X 系统,就可以使用 easy_install 安装 virtualenv
      sudo easy_install virtualenv
      
      如果你的 Window 系统或没有其它官方 virtualenv 的包的操作系统,那么安装过程要稍微复杂点,在浏览器中输入http://bitbucket.org/pypa/setuptools/ 回车后会进入setuptools安装程序的主页。在这个页面中华找到下载安装脚本的链接,脚本名为ez_setup.py。把这个保存到电脑的一个临时文件夹中,然后在这个文件夹中执行以下我命令:
          python ez_setup.py install
          easy_install virtualenv
      

    注意:上述命令必须具有管理员权限的用户身份执行,在 window 系统中,请使用 以管理员身份运行选项打开命令行窗口,在基于 Unix 中,要在上面两个命令前加上 sudo,或者以根用户身份执行,一旦安装完毕virtualenv实用工具就可以从常规账号中调用

    哈哈,说了这么多,还是一直在安讲安装,接下来我们就开始讲如何操作

    1. 首先要使用virtualenv来初始化项目
        virtualenv env
    

    后面的这个env 告诉 virtualenv,把所有的包都装在一个叫作env的文件夹里,这个文件夹保存的是一个全新的虚拟环境, 2. 激活virtualenv 使用前需要激活这个环境,如果你是 bash命令行(Linux 和 Mac OS X 用户),可以通过以下的命令来激活这个虚拟环境:

        source env\bin\activate
    

    如果你是 window 用户,激活命令为;

        env/bin/activate
    

    当虚拟环境被激活后, python 解释器的路径就被添加到了 PATH 中,但是这种环境不是永久的,它只会影响当前的命令行会话。为了提醒你已经激活了虚拟环境,激活虚拟环境的命令会修改命令行的提示符,加入环境名: (evn) $ 然后我们就可以在这个虚拟环境中愉快的装包了,不用担心会影响全局变量 3. 退出 virtualenv

    • 退出你只需要一个命令就能完成了,那就是deactivate

    转载需注明出处

    14 条回复    2017-04-19 22:23:15 +08:00
    netfee
        1
    netfee  
       2017-04-13 16:14:36 +08:00 via Android
    补充一个用 virtualenv 创建 py3 虚拟环境的方法:
    virtualenv -p python3 venv 。
    geeklian
        2
    geeklian  
       2017-04-13 16:33:25 +08:00
    @netfee
    Python3 已经内置了 venv 模块,不需要 virtualenv 啦,

    python3 -m venv --help
    netfee
        3
    netfee  
       2017-04-13 18:19:08 +08:00 via Android
    @geeklian 谢谢。又学会一个方法。
    only0jac
        4
    only0jac  
       2017-04-14 08:05:43 +08:00 via Android
    @geeklian 请问下,如果服务器默认是 py2.7 ,现在我装了 py3 (服务器执行 python 依然是 2.7 ),那我现在想创建一个 py3 的项目, py3 自带的虚拟环境可以满足吗?
    AyoCross
        5
    AyoCross  
       2017-04-14 09:22:51 +08:00
    Windows 下: scripts\activate
    mapleray
        6
    mapleray  
       2017-04-14 10:32:18 +08:00
    不试试 virtualenvwrapper?
    netfee
        7
    netfee  
       2017-04-14 12:21:25 +08:00 via Android   ❤️ 1
    @only0jac 安装 virtualenv 后,使用-p 指定 py 的版本的命令
    virtualenv -p python3 venv
    肯定是可以的。#2 楼的方法,我还没有试,要不你试一下吧。
    geeklian
        8
    geeklian  
       2017-04-14 14:06:49 +08:00 via Android   ❤️ 1
    @only0jac 可以啊
    only0jac
        9
    only0jac  
       2017-04-15 07:27:10 +08:00 via Android
    @netfee 哈哈,我现在也是用这种方法,该试试新技术了
    guolingbing
        10
    guolingbing  
       2017-04-17 09:46:59 +08:00 via Android
    然而我还是选了 pyenv
    char1998
        11
    char1998  
    OP
       2017-04-19 17:25:40 +08:00
    @netfee 其实 python2 也能用这种方法创建
    char1998
        12
    char1998  
    OP
       2017-04-19 17:26:22 +08:00
    @guolingbing 哈哈,我还没用过 python3 尼,准确的是说没在 window 上用过
    netfee
        13
    netfee  
       2017-04-19 22:20:54 +08:00 via Android
    @char1998 Python 的最最核心的原则就是“ get job done ”。可能有一万种方法来完成一件事,但是我只需要掌握其中的一两种即可。当然,多学习是对的。
    netfee
        14
    netfee  
       2017-04-19 22:23:15 +08:00 via Android
    @char1998 对的呀,用-p 指定 Python 版本。直接不指定默认是二,当然 python2 也是可以的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5118 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 01:12 · PVG 09:12 · LAX 17:12 · JFK 20:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.