python最佳实践--python多环境管理使用方便快捷强大的virtualenv

Python015

python最佳实践--python多环境管理使用方便快捷强大的virtualenv,第1张

在使用python开发项目的过程中,python因为版本的原因,有诸多的库在某些特定的python版本才可以运行,我们就需要将单个项目的python环境单独出来,python的虚拟环境管理工具有很多种,venv、virtualenv、pyenv、anacona 等,各式各样,眼花缭乱,都不知道如何选择

那最佳的,最适合我们的是什么?根据我长期的使用,我觉得 virtualenv 是最佳的选择,virtualenv如何使用 ?

1、安装,使用pip安装即可

2、使用

安装好virtualenv就可以直接使用命令创建一个虚拟环境,如下命令创建是创建一个 venv 的虚拟环境

同时,virtualenv 也有很多参数,可以使用帮助命令来查看命令说明

其中,经常用的一些参数,我给大家翻一下

进入虚拟环境

linux 环境下,使用 source 命令进入虚拟环境

退出命令则运行如下命令即可

windows环境下,进入虚拟环境的方法有所有不同,可以直接运行环境根目录下 Scripts 的 shell 脚本,使用cmd打开的就运行 ****.bat 的脚本,用powershell打开的就是用 ****.ps1脚本

退出命令同样是:deactivate

最后我给出使用 virtualenv 的一些使用建议

我们在做项目时候,建议最好一个项目使用一个虚拟环境,放在项目的根目录下,使得在发布项目的时候方便快捷,在项目部署时,使用 pip freeze >requirements.txt 到处依赖包列表。

通常,不要使用from modulename import *。这样做会使导入器的命名空间变得混乱,并且使得连接器更难以检测未定义的名称。

在文件的顶部导入模块。这样做可以清楚地了解代码所需的其他模块,并避免了模块名称是否在范围内的问题。每行导入一个模块可以轻松添加和删除导入的模块,但每行导入多个模块会占用更少的屏幕空间。

如果按以下顺序导入模块,这是一种很好的做法:

1.标准库模块 -- 例如:sys,os,getopt,re

2.第三方库模块(安装在Python的site-packages目录中的任何内容) -- 例如mx.DateTime,ZODB,PIL.Image等

3.本地开发的模块

有时需要将模块导入语句移动到函数或类里面,以避免循环导入问题。Gordon McMillan 说:

当两个模块都使用 "import <module>" 的导入形式时,循环导入就可以了。但是当第 2 个模块想从第 1 个模块中获取一个名称 ("from module import name") 并且导入位于顶层时,就会出错。 这是因为第 1 个模块中的名称还不可用,因为第 1 个模块正在忙着导入第 2 个模块。

在这种情况下,如果第二个模块仅用于一个函数,则可以轻松地将模块导入语句移动到该函数中。调用导入时,第一个模块将完成初始化,第二个模块可以进行导入。

如果某些模块是特定于平台的,则可能还需要将模块导入语句移出顶级代码。在这种情况下,甚至可能无法导入文件顶部的所有模块。在这种情况下,在相应的特定于平台的代码中导入正确的模块是一个很好的选择。

只有当需要解决诸如避免循环导入或试图减少模块初始化时间的问题时,才可以将导入移动到本地范围,例如在函数定义中。如果根据程序的执行方式,许多导入是不必要的,这种技术尤其有用。如果仅在某个函数中使用模块,您还可能希望将导入移到该函数中。请注意,第一次加载模块可能会因为模块的一次初始化而代价高昂,但多次加载模块实际上是免费的,只需进行几次字典查找。即使模块名称超出了作用域,模块也可能在 sys.modules 中可用。

深度学习入门》([ 日] 斋藤康毅)电子书网盘下载免费在线阅读

资源链接:

链接: https://pan.baidu.com/s/1ddnvGv-r9PxjwMLpN0ZQIQ

?pwd=bhct 提取码: bhct 

书名:深度学习入门

作者:[ 日] 斋藤康毅

译者:陆宇杰

豆瓣评分:9.4

出版社:人民邮电出版社

出版年份:2018-7

页数:285

内容简介:本书是深度学习真正意义上的入门书,深入浅出地剖析了深度学习的原理和相关技术。书中使用Python3,尽量不依赖外部库或工具,从基本的数学知识出发,带领读者从零创建一个经典的深度学习网络,使读者在此过程中逐步理解深度学习。书中不仅介绍了深度学习和神经网络的概念、特征等基础知识,对误差反向传播法、卷积神经网络等也有深入讲解,此外还介绍了深度学习相关的实用技巧,自动驾驶、图像生成、强化学习等方面的应用,以及为什么加深层可以提高识别精度等“为什么”的问题。

作者简介:

斋藤康毅

东京工业大学毕业,并完成东京大学研究生院课程。现从事计算机视觉与机器学习相关的研究和开发工作。是Introducing Python、Python in Practice、The Elements of Computing Systems、Building Machine Learning Systems with Python的日文版译者。

译者简介:

陆宇杰

众安科技NLP算法工程师。主要研究方向为自然语言处理及其应用,对图像识别、机器学习、深度学习等领域有密切关注。Python爱好者。