美文网首页
python包管理

python包管理

作者: 汉江岳 | 来源:发表于2020-03-22 22:59 被阅读0次

    问题
    python 使用 pip 进行package管理,但当同时进行多个project的开发时,不同的项目对同一个包的要求可能会不一样,这就导致同一个默认的开发环境不能满足需求。

    Solution
    配置一个基本的最小化的系统级python环境,进行project开发时,为每一个project新建一个虚拟环境,新建的虚拟环境是对系统默认python环境的“复制”,然后在该虚拟环境下为project安装相应的依赖包,每个project在各自的虚拟环境中开发,互相不干扰。

    工具
    pip 可以让我们安装和卸载包。我们可以指定版本,运行 pip freeze > requirements.txt 来输出一个已安装包列表到一个文本文件,还可以用相同的文本文件配合 pip install -r requirements.txt 来安装一个应用程序需要的所有包。
    但pip没有将软件包进行隔离。

    但是 pip 并没有包含将软件包彼此隔离的方法。直接使用python3 内置的venv + pip 即可(python2 已停止维护,没必要再去用virtualenv, 虽然virtualenv 也支持python3)。
    至于pipenv是个半成品,已经被抛弃。。。
    ============================================================
    至此,的前提是系统安装一个固定的python版本,比如:python3.6.7,然后基于该版本的python创建若干个虚拟环境。
    问题来了,当project,需要例外一个版本的python呢
    答:目前的venv + pip 无法解决(当然也不是绝对,手动安装另外一个版本的python也不是不阔以,只是比较麻烦嘛!), 需要借助 anaconda,可以创建指定任意python版本的虚拟环境,进一步(更底层)实现虚拟化。
    ============================================================
    docker则可以是对系统级环境进行进一步的虚拟化,通过编写Dockerfile 可以创建指定任意版本的ubuntu、cuda、anaconda等,属于更为底层的虚拟化。参见https://www.jianshu.com/writer#/notebooks/41683943/notes/58079166

    总结
    经济实用选择:高版本python3(3.6+) + venv + pip
    没GPU,要经常开发不同版本的python的项目:anaconda + pip/conda (不需要venv了)
    GPU服务器:docker + anaconda + pip/conda

    参考

    1. https://docs.python.org/3/tutorial/venv.html
    2. https://docs.python.org/3/library/venv.html

    相关文章

      网友评论

          本文标题:python包管理

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