Python 虚拟环境

参考:http://www.cnblogs.com/wilber2013/p/4774022.html
virtualenv documentation: https://virtualenv.pypa.io/en/latest/
virtualenvwrapper documentation: http://virtualenvwrapper.readthedocs.org/en/latest/
http://docs.python-guide.org/en/latest/dev/virtualenvs/
http://pythonguidecn.readthedocs.io/zh/latest/dev/virtualenvs.html
virtualenv 中文文档地址 : http://virtualenv-chinese-docs.readthedocs.io/en/latest/#

由于 Python 的版本众多,还有 Python2 和 Python3 的争论,因此有些软件包或第三方库就容易出现版本不兼容的问题。同时在python 开发中,我们可能会遇到一种情况,就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲突。

对于上面的问题,已经有很多现成的个工具可以解决。根据解决上面问题的方法,这些工具大概可以分为两类:

  • Python版本  切换工具 【 真实的Python环境,但是却是不同的版本
  • 特定Python版本虚拟环境 切换工具。【针对某一个版本的Python,来创建新的Python环境】

批量 安装 Python 包

冻结(freeze) 环境:就是将当前环境的软件包等保存下来:

$ pip freeze > requirements.txt$ 
$ cat requirements.txt

重建(rebuild) 环境:就是在部署的时候,在生产环境安装好对应版本的软件包,不要出现版本兼容 等问题.

$ pip install -r requirements.txt  配合pip,可以批量安装对应版本的软件包,快速重建环境,完成部署

对于每个虚拟环境,都可以通过下面的命令很方便的进行环境部署:

  • pip freeze > requirements.txt      将包依赖信息保存在requirements.txt文件
  • pip install -r requirements.txt     会自动从网上下载并安装所有包

1、Python版本 环境 切换工具

Python 版本环境切换工具的作用就是让多个不同版本的 Python 可以在系统上共存。并且提供简单的命令来支持不同 Python 版本之间的切换。

工具介绍
pyenv目前最流行的 python版本环境切换工具,但是不支持 Windows
pywinWindows 上 pyenv 的替代品,但是功能相对 pyenv 比较少
py.exePython 3.3 版本以后 Windows 系统自带的启动工具(Python Launcher for Windows),可以直接在命令行中使用

1.1 pyenv:Linux 上的 Python 多版本管理

From: https://my.oschina.net/lionets/blog/267469

pyenv 命令参考:https://github.com/pyenv/pyenv/blob/master/COMMANDS.md#command-reference

提到 Python 环境管理,更多人可能会首先想到 virtualenv。但与用于创建独立包环境的 virtualenv 不同,pyenv 的作用仅限于维护不同版本的 Python。它的使用不依赖于 Python,是一个简单、独立的纯 shell 脚本工具。pyenv 也可以以 pyenv-virtualenv 插件的形式支持 virtualenv,强烈建议使用。安装后比较方便的是可以在你 cd 到项目目录时自动切换相应的虚拟环境,而不用老是 source.

pyenv 在安装和配置完毕后可以实现:一键(命令)切换 全局本地 当前 shell 使用的 Python 版本

pyenv 的美好之处在于,他并没有使用将不同的 $PATH 植入不同的 shell 这种高耦合的工作方式,而是简单地在 $PATH 的最前面插入了一个垫片路径(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而架空了后面的系统路径。

和 git 一样,pyenv 命令根据第一个参数委托给子命令。最常见的子命令有:

  • pyenv commands
  • pyenv local
  • pyenv global
  • pyenv shell
  • pyenv install
  • pyenv uninstall
  • pyenv rehash
  • pyenv version
  • pyenv versions
  • pyenv which
  • pyenv whence

pyenv 基本使用

1. 安装:git clone https://github.com/pyenv/pyenv.git

2. 配置 pyenv 环境变量

echo 'export PYENV_ROOT="$HOME/pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

3. 基本命令

pyenv commands            查看 pyenv 命令
pyenv install --list      查看可安装的 python 版本
pyenv versions            查看已安装版本
pyenv version             查看当前使用的 python 版本
pyenv install -v 版本号   安装 python
pyenv rehash              刷新 python 已安装列表
pyenv uninstall 版本号    删除 python
pyenv global 版本号       设置当前全局python版本
pyenv local  版本号       设置局部python版本
pyenv local --unset       取消局部python版本设置,或者删除当前目录下的.python-version文件

4. 安装 pyenv-virtualenv 插件

git clone git://github.com/yyuu/pyenv-virtualenv.git ./pyenv/plugins/pyenv-virtualenvecho 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
source ~/.bash_profile

5. 使用 pyenv-virtualenv

pyenv virtualenv 版本号 name   创建一个虚拟环境,命名为name 创建好后可通过pyenv versions来查看
pyenv activate name            切换到 name 虚拟环境中
pyenv deactivate               推出虚拟环境
pyenv virtualenv-delete name   删除 name 环境

简单使用

pyenv version          # 查看当前版本
pyenv versions         # 查看所有版本
pyenv install --list   # 查看所有可安装的版本
pyenv install 3.6.5    # 安装指定版本
pyenv rehash           # 安装新版本后rehash一下
pyenv uninstall 3.5.2  # 删除指定版本
pyenv global 3.6.5     # 指定全局版本
pyenv global 3.6.5 2.7.14   # 指定多个全局版本, 3版本优先
# 实际上当你切换版本后, 相应的pip和包仓库都是会自动切换过去的

效果:

包管理插件 pyenv-virtualenv

首先下载:$ git clone https://github.com/pyenv/pyenv-virtualenv.git $.pyenv/plugins/pyenv-virtualenv

克隆完成后添加如下到 shell 配置文件(mac的话是.zshrc):

$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

实际上 mac 用户直接 brew 安装就可以了...

$ brew install pyenv-virtualenv
$ eval "$(pyenv init -)"
$ eval "$(pyenv virtualenv-init -)"

使用:

# 创建一个3.6.5版本的虚拟环境, 命名为v365env, 然后激活虚拟环境
$ pyenv virtualenv 3.6.5 v365env
$ pyenv activate v365env
# 关闭虚拟环境
$ pyenv deactivate v365env

当切换 python 解释器的时候对应的 pip 和包库也会一并切换过去,而且可以为指定版本的解释器创建项目所需的虚拟环境,切换的时候也异常简单。

常用的做法是为每个项目创建不同的虚拟环境,当进入该环境的时候就可以随便浪而不用担心影响到其它项目,搭配Pycharm使用效果更佳。

1.2 pywin:Windows 上 Python 版本环境切换工具

现在看看 Windows上Python版本环境切换工具 pywin

对于pywin的工作原理就可以简单的理解为,通过pywin提供的命令可以简单的以设置环境变量的方式决定优先使用特定版本的Python。

安装

对于pywin,我们可以使用源码、easy_install和pip三种方式进行安装,关于这些安装方式的关系,请参考前一篇文章

下面通过pip来安装pywin:

常用命令

安装完成之后就看看pywin的常用命令。

"pyassoc"和"pywin genlaunchers"是两个配置相关的命令。我本机安装了2.7和3.4两个版本的Python,默认环境变量指向2.7,配置完成后就会就会在2.7目录中生成本机安装所

有Python版本的launcher。

配置完成之后,就可以通过pywin进行不同版本之间的Python切换了。

1. 打开环境变量 PAHT 中第一个 Python 版本环境

C:\Users\tianw1>pywin
Python 2.7.7 (default, Jun  1 2014, 14:17:13) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

2. 打开 Python 3.4

C:\Users\tianw1>pywin -3.4
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

3. 将 Python 3.4 设置为默认的 Python 执行环境,根据输出也可以看出,其实就是将 Python 3.4 目录放在环境变量 PATH 的前面位置

C:\Users\tianw1>pywin setdefault 3.4Setting default python for active session to: 3.4C:\Python34;C:\Python34\Scripts -- now at front of PATH
# 由于Python 3.4中没有安装pywin,所以会报错
C:\Users\tianw1>pywin
'pywin' is not recognized as an internal or external command,
operable program or batch file.C:\Users\tianw1>python
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

4. 即使上面通过 pywin 将默认 Python 版本环境设为 3.4,但是由于文件的查找还是先本地,然后环境变量 PATH。所以,下面方式使用的还是 2.7 版本,同时也可以再通过 pywin 将 2.7 设置为默认 Python 版本环境。

C:\>cd Python27
C:\Python27>python
Python 2.7.7 (default, Jun  1 2014, 14:17:13) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()C:\Python27>pywin setdefault 2.7Setting default python for active session to: 2.7C:\Python27;C:\Python27\Scripts -- now at front of PATHC:\Python27>

2、特定Python版本 虚拟环境 切换工具

简单的说,虚拟环境切换工具就是可以根据当前使用的Python版本环境创建多个虚拟的Python环境。这些虚拟的环境之间相互独立,可以安装各个环境所需的 Python 包。

工具介绍
virtualenv目前最流行的 python虚拟环境 配置工具
virtualenvwrapper使用shell开发,是对 virtualenv 的一个封装,简化了virtualenv 命令的使用,并且进行了一些功能扩展
virtualenvwrapper-win使用 Windows batch shell 开发的 virtualenvwrapper
venvPython 3.3 版本以后自带的虚拟环境工具,仅支持 python 3.3 和以后版本

2.1 virtualenv

virtualenv 通过创建一个虚拟化的 python 运行环境,将我们所需的依赖安装进去的,不同项目之间相互不干扰。然后在每个环境中安装需要的软件包(配合 pip 使用),这一系列的环境是相互隔离的。作为一个独立的环境就不容易出现版本问题,还方便部署。

  1. Github: GitHub - pypa/virtualenv: Virtual Python Environment builder
  2. Doc:  https://virtualenv.pypa.io/en/latest/

virtualenv 安装

VirtualEnv 用于在一台机器上创建多个独立的 Python 运行环境。

Virtualenv 可用于创建独立的 Python 环境,是一个非常好的 virtual Python environment builder,他最大的好处是,可以让每一个 python 项目单独使用一个环境,而不会影响 python 系统环境,也不会影响其他项目的环境。在这些环境里面可以选择不同的 Python 版本或者不同的 Packages,并且可以在没有 root 权限的情况下在环境里安装新套件,互相不会产生任何的影响。

为什么要用 virtualenv ?

  1.  隔离项目之间的第三方包依赖,如A项目依赖 django1.2.5,B项目依赖 django1.3。
  2.  为部署应用提供方便,把开发环境的虚拟环境打包到生产环境即可,不需要在服务器上再折腾一翻。在服务器上都不用安装virtualenv,直接将virtualenv创建的目录拷贝到服务器,修改路径,进行虚拟环境迁移就可以用了
  3.  还可以用在没有 root 权限的 python 环境配置上,如果没有 root 权限,可以先自己搞一个 virtualenv,再在 virtualenv 中使用 pip 安装。(系统中没有pip,并且也没有root权限使用sudo apt-get安装)

虚拟环境中安装的库的位置在哪 ?

在虚拟环境中安装的库在 env/Lib/site-packages/ 目录里,而不是在系统的 python 的 Lib/site-packages 目录里,这就是为什么虚拟环境是分开的。

注意:virtualenv 创建的虚拟环境与主机的 Python 环境完全无关,你主机配置的库不能在 virtualenv 中直接使用。你需要在虚拟环境中利用 pip install 再次安装配置后才能使用。

安装 virtualenv 比较简单,无论是在linux系统上还是windows上都可以通过pip来进行安装,如下:pip install virtualenv

如果安装不成功也可以下载 virtualenv源码 package,通过执行 setup.py 来安装 virtualenv。同时因为 python2 和 python3 的不同,因此也有了两种 pip 和 pip3 两种 python 包安装工具,而两种工具安装的

virtualenv 也是不相同的,py2 安装的 virtualenv 虚拟化出来的python运行环境是python2的,py3安装的virtualenv默认虚拟化环境则是python3的。
网速较好可以通过 pip 来安装, 系统没有 pip 的请参考 pip2 或 pip3

pip install virtualenv
pip install setuptools     # 如果提示安装就执行这个

virtualenv 创建

mkdir myproject              创建项目文件夹 myproject
cd myproject                 进入项目目录
virtualenv myproject_ENV     创建虚拟环境 myproject_ENV

这时候会发现在 myproject 目录下新增了一个 myproject_ENV 的文件夹。

virtualenv 使用

cd myproject_ENV            进入虚拟环境目录 myproject_ENV
source ./bin/activate       激活

这时候在命令行的最左边会显示该虚拟环境的名称。不妨使用下面的命令查看一下变化:

which python
which pip
pip list

如果想要退出虚拟环境,使用这个命令就可以了:deactivate

virtualenv 的基本使用

$ virtualenv venv                          创建虚拟环境 
$ virtualenv -p /usr/bin/python2.7 venv    为环境指定Python解释器: 
$ source venv/bin/activate                 激活虚拟环境
$ deactivate                               停止虚拟环境。退出虚拟环境
删除虚拟环境    直接删除目录即可

激活虚拟环境之后就可以通过命令 pip install 来安装 python 包了,这里安装 python 包就不需要 root 权限了,直接就可以安装十分方便。

在 venv 的环境中,使用 pip 安装的包都不会再是全局性的包,只会在当前的虚拟环境中起作用,避免了污染系统环境。

运行 pip 带 –no-site-packages 选项的 virtualenv 将不会包括全局安装的包。这可用于保持包列表干净, 以防以后需要访问它。(这在 virtualenv 1.7及之后是默认行为)

virtualenv 各种其他命令如下:

$ virtualenv [OPTIONS] DEST_DIR选项:
--version        显示当前版本号。
-h, --help       显示帮助信息。
-v, --verbose    显示详细信息。
-q, --quiet
不显示详细信息。
-p PYTHON_EXE, --python=PYTHON_EXE    指定所用的python解析器的版本,比如 --python=python2.5 就使用2.5版本的解析器创建新的隔离环境。 默认使用的是当前系统安装(/usr/bin/python)的python解析器
--clear             清空非root用户的安装,并重头开始创建隔离环境。
--no-site-packages        令隔离环境不能访问系统全局的site-packages目录。
--system-site-packages    令隔离环境可以访问系统全局的site-packages目录。
--unzip-setuptools        安装时解压Setuptools或Distribute
--relocatable             重定位某个已存在的隔离环境。使用该选项将修正脚本并令所有.pth文件使用相当路径。
--distribute              使用Distribute代替Setuptools,也可设置环境变量VIRTUALENV_DISTRIBUTE达到同样效要。
--extra-search-dir=SEARCH_DIRS       用于查找setuptools/distribute/pip发布包的目录。可以添加任意数量的–extra-search-dir路径。
--never-download                     禁止从网上下载任何数据。此时,如果在本地搜索发布包失败,virtualenv就会报错。
--prompt==PROMPT                     定义隔离环境的命令行前缀。

使用

[root@localhost home]# virtualenv MTP            # 创建名为MTP的虚拟环境
New python executable in /home/MTP/bin/python
Installing setuptools, pip, wheel...done.
[root@localhost home]# ls                               #  会在当前目录生成一个目录
MTP
[root@localhost home]# cd MTP/
[root@localhost MTP]# ls
bin  include  lib  lib64  pip-selfcheck.json
[root@localhost MTP]# source ./bin/activate       #  启动虚拟环境后, 此时命令行会多一个(MTP)
(MTP) [root@localhost MTP]# pip freeze    # MTP为虚拟环境名称, 接下来所有模块都只会安装到该目录
(MTP) [root@localhost MTP]# pip list
pip (9.0.0)
setuptools (28.7.1)
wheel (0.30.0a0)
(MTP) [root@localhost MTP]# deactivate      #  退出虚拟环境, 将回到系统默认的Python解释器环境
[root@localhost MTP]#

删除
删除一个虚拟环境, 只需要删除它的目录.  有必要请执行( rm -rf venv )

2.2 扩展包 Virtualenvwrapper

VirtualEnvWrapper VirtualEnv 提供了一些便利的命令行上的封装。

为了使用 virtualenv 更方便,可以借助 virtualenvwrapper。Virtualenvwrapper 的作用是:更方便的创建/激活/管理/销毁虚拟环境。

Virtaulenvwrapper 是 virtualenv 的扩展包,它提供了一系列命令用于更方便管理虚拟环境,它可以做:

  • 1. 将所有虚拟环境整合在一个目录下
  • 2. 管理(新增,删除,复制)虚拟环境
  • 3. 切换虚拟环境 …

virtualenvwrapper 提供环境名字的 tab 补全功能.

$ sudo pip install virtualenvwrapper            安装 virtualenvwrapper 
$ source /usr/local/bin/virtualenvwrapper.sh    加载 virtualenvwrapper 创建虚拟环境 
默认创建的虚拟环境位于 ~/.virtualenvs ,可以通过环境变量 $WORKON_HOME 来定制。 $ mkvirtualenv test2-env     创建 test2-env 虚拟环境后,会自动激活环境,注意看Shell提示符的改变:
(test2-env)CL-USER> test2-env$ $ mkvirtual [环境名称]       创建 虚拟环境
$ lsvirtualenv        列出所有虚拟环境
$ workon test2-env    激活 test2-env 虚拟环境 
$ cdvirtualenv        进入到当前激活的虚拟环境的目录中
$ cdsitepackages      进入到当前激活的虚拟环境的 site-packages 目录 
$ lssitepackages      列出 site-packages 目录的所有软件包 
$ deactivate          停止虚拟环境。离开虚拟环境 
$ rmvirtualenv test2-env    删除虚拟环境 

安装

[root@localhost MTP]# pip install virtualenvwrapper
[root@localhost MTP]# echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc
[root@localhost MTP]# source  ~/.bashrc
[root@localhost MTP]# source $(find /usr -type f -name virtualenvwrapper.sh)

此时 virtualenvwrapper 就可以使用了; 对于Windows, 可以使用 virtualenvwrapper-win 或者安装:sudo easy_install virtualenvwrapper  
此时还不能使用virtualenvwrapper,默认virtualenvwrapper安装在/usr/local/bin下面,实际上你需要运行virtualenvwrapper.sh文件才行。
先别急,打开这个文件看看,里面有安装步骤,我们照着操作把环境设置好。

创建目录用来存放虚拟环境
mkdir $HOME/.virtualenvs
在~/.bashrc中添加行: export WORKON_HOME=$HOME/.virtualenvs
在~/.bashrc中添加行:source /usr/local/bin/virtualenvwrapper.sh
运行: source ~/.bashrc
此时virtualenvwrapper就可以使用了。

virtualenvwrapper-win

在 Windows环境中使用 "virtualenvwrapper-win" 还是比较方便的。

安装。同样使用 pip 进行安装:pip install virtualenvwrapper-win

常用命令。安装完成之后,就可以直接使用 "virtualenvwrapper-win" 提供的命令来创建虚拟环境了。

1. 新建虚拟环境:mkvirtualenv env_name

C:\Users\tianw1>mkvirtualenv py27_dev1
New python executable in py27_dev1\Scripts\python.exe
Installing setuptools, pip, wheel...done.(py27_dev1) C:\Users\tianw1>pip list
pip (7.1.2)
setuptools (18.2)
wheel (0.24.0)

注意,默认情况虚拟环境不会自通引用原始 Python 环境中的软件包,但是可以通过 "--system-site-packages" 参数来使虚拟环境引用原始 Python 环境中的软件包。

C:\Users\tianw1>mkvirtualenv --system-site-packages py27_dev2
New python executable in py27_dev2\Scripts\python.exe
Installing setuptools, pip, wheel...done.
(py27_dev2) C:\Users\tianw1>pip list

2. 离开虚拟环境:deactivate

(py27_dev1) C:\Users\tianw1>deactivate
C:\Users\tianw1> 

3. 列出虚拟环境列表:workon 或 lsvirtualenv

C:\Users\tianw1>workon
Pass a name to activate one of the following virtualenvs:
==============================================================================
py27_dev1
py27_dev2C:\Users\tianw1>lsvirtualenv
dir /b /ad "C:\Users\tianw1\Envs"
==============================================================================
py27_dev1
py27_dev2C:\Users\tianw1>

4. 删除虚拟环境:rmvirtualenv env_name

2.3 Python3 venv 创建 虚拟环境

venv — Creation of virtual environments — Python 3.10.1 documentation

Python3.3 以上的版本通过 venv 模块 原生支持虚拟环境,可以代替 Python之前的 virtualenv。该 venv模块 提供了创建轻量级“虚拟环境”,提供与系统 python 的隔离支持每一个虚拟环境都有其自己的 Python二进制(允许有不同的Python版本创作环境),并且可以拥有自己独立的一套 Python包。

首先,我们先在某个目录下( 根目录 或者 桌面,关键是下次要用能够找得到),输入:

$ python3 -m venv XXX

XXX 指你要创建的文件名。因为在执行这行命令之后,就会把与 Python 虚拟环境有关的文件放到 XXX 里面。
之后只需要运行这个里面的 activate 文件就行。Linux下的命令如下:

$ source <XXX>/bin/activate

Windows 的 cmd 下是:

C:> <XXX>/Scripts/activate.bat

在PowerShell下是:

PS C:> <venv>/Scripts/Activate.ps1

但是为了避免运行不信任的脚本,PowerShell 下此脚本可能被禁止。此时输入命令:

set-executionpolicy remotesigned

然后更改执行策略就可以了。

退出环境之前输入:

$ deactivate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VR变革已来!华为完成业界首个5G实验网下Cloud VR业务验证

来源&#xff1a;智吧网近日&#xff0c;华为、北京传送科技有限公司&#xff08;TPCAST&#xff09;联合完成业界首个5G实验网下Cloud VR业务验证&#xff0c;实现了交互式CG&#xff08;Computer Graphics&#xff09;VR内容的实时云端渲染。何以见得这足以被历史铭记&#x…

预测|十张图带你了解2018年机器人行业趋势与前景

来源&#xff1a;前瞻产业研究院3月15日&#xff0c;腾讯对外公布了其2018年在AI领域的三大核心战略&#xff0c;其中包括成立机器人实验室“Robotics X”。当然&#xff0c;腾讯并不是唯一一家展开行动的互联网巨头&#xff0c;“三巨头”中的另外两家——百度和阿里&#xff…

python mro c3_Python 19 MRO和C3算法

1.python经典类的MRO经典类的MROclass A: pass class B(A): pass class C(A): pass class D(B, C): pass class E: pass class F(D, E): pass class G(F, D): pass class H: pass class Foo(H, G): passenter description here2. python新式类的MRO, C3算法新式类的MROclass A:…

Java加密与解密的艺术~安全协议~模型分析

模型分析 1、协商算法 RNC&#xff1a;Random Number Client RNS&#xff1a;Random Number Server 2、验证证书 3、产生密钥 PMS&#xff1a;Pre-Master Secret&#xff08;预备主密钥&#xff09; MS&#xff1a;Master Secret&#xff08;主密钥&#xff09; 4、加密交互

漫天风口,一地泡沫,消费机器人四年跌宕史

来源&#xff1a;OFweek 作者&#xff1a;邹大湿提及科技浪潮&#xff0c;AI 和机器人是逃不过的。2018年&#xff0c;AI依旧很火&#xff0c;但几年前曾经燥热的机器人狂潮&#xff0c;似乎凉凉了&#xff1f;那个曾经宣称万亿市场的智能机器人&#xff0c;究竟怎么了&#…

Python操作RabbitMQ

来源&#xff1a;http://www.cnblogs.com/phennry/p/5713274.html 本篇博客主要介绍如何通过Python来操作管理RabbitMQ消息队列&#xff0c;大家在工作中可能遇到很多类似RabbitMQ这种消息队列的中间件&#xff0c;如&#xff1a;ZeroMQ、ActiveMQ、MetaMQ等&#xff0c;我们学…

分享-利用VPC防止病毒软件的进入你的windows电脑

作为一个软件爱好者时不时都会从网上下载一些软件使用&#xff0c;虽然&#xff0c;现在防病毒和木马软件做得很好&#xff0c;但也架不住众多病毒木马的攻击。 所以&#xff0c;我的经验是当我下载一个软件以后&#xff0c;无法判定是否是病毒木马的话&#xff0c;我会安装在虚…

无监督学习最新研究:通过简单的「图像旋转」预测便可为图像特征学习提供强大监督信号

作者&#xff1a;Spyros Gidaris、Praveer Singh、Nikos Komodakis「雷克世界」编译&#xff1a;嗯~是阿童木呀、KABUDA、EVA在过去的几年中&#xff0c;深度卷积神经网络&#xff08;ConvNets&#xff09;已经改变了计算机视觉的领域&#xff0c;这是由于它们具有学习高级语义…

Java加密与解密的艺术~安全协议~单向认证服务

1、准备工作 A、域名绑定 在hosts文件末尾追加 127.0.0.1 www.zlex.org B、证书导入 浏览器导入自签名证书文件zlex.cer C、服务器配置 配置SSL/TLS 单向认证 <Connectorport"443"SSLEnabled"true"clientAuth"false"maxThreads"150…

java 3des加密_Java使用3DES加密解密的流程 - 3des加密解密详细解释

Java使用3DES加密解密的流程①传入共同约定的密钥(keyBytes)以及算法(Algorithm)&#xff0c;来构建SecretKey密钥对象SecretKey deskey new SecretKeySpec(keyBytes&#xff0c; Algorithm);②根据算法实例化Cipher对象。它负责加密/解密Cipher c1 Cipher.getInstance(Algor…

Python 并行分布式框架 Celery

Celery 官网&#xff1a;http://www.celeryproject.org Celery 官方文档英文版&#xff1a;http://docs.celeryproject.org/en/latest/index.html Celery 官方文档中文版&#xff1a;http://docs.jinkan.org/docs/celery celery配置&#xff1a;http://docs.jinkan.org/docs/c…

java判断是否是路径_java判断是否是目录

java判断是否是目录&#xff1a;/*** 创建目录** param path*/public static void CreatFileDir(String path) {try {File file new File(path);if(file.getParentFile().isDirectory()){//判断上级目录是否是目录if(!file.exists()){ //如果文件目录不存在file.mkdirs(); //创…

中国数字化进程比发达国家快,小程序让我感到自豪 | IT领袖峰会

作者&#xff1a; 张驰2018年3月25日上午举办的第10届2018中国&#xff08;深圳&#xff09;IT领袖峰会上&#xff0c;腾讯公司董事会主席兼首席执行官发表了 “数字中国的机遇与探索” 主题演讲。在演讲中表示&#xff0c;不管什么产业都是需要科技来对它进行改造升级、转型。…

Java加密与解密的艺术~安全协议~双向认证服务

双向认证服务 1、准备工作 A、证书导入 导入ca.p12 导入client.p12 B、服务器配置 <Connectorport"443"SSLEnabled"true"clientAuth"true"maxThreads"150"protocol"HTTP/1.1"scheme"https"sec…

利用 Celery 构建 Web 服务的后台任务调度模块

来源&#xff1a;http://www.tuicool.com/articles/Enaeymm 任务队列在 Web 服务里的应用 在 Web2.0 后的时代&#xff0c;社交网站、搜索引擎的的迅猛发展对 Web 服务的后台管理系统提出了更高的需求。考虑几个常见的使用场景&#xff1a; 社交网站的用户在其主页发布了一组新…

java元素符号是什么_Java 代码中 @ 符号是什么意思?

展开全部annotation。Annotation&#xff0c;是Java5的新特性&#xff0c;下面是Sun的Tutorial的描述&#xff0c;因为是英文&#xff0c;这里我翻译下&#xff0c;希望能够比较清晰32313133353236313431303231363533e58685e5aeb931333264633435的描述一下Annotation的语法以及…

风景这边独好的AI大年,百度亚马逊等巨头第一季度成绩单怎么样?

苹果春季新品发布会邀请函来源&#xff1a;遇见人工智能该来的还是来了&#xff0c;但是那又如何&#xff1f;这句话是送给苹果的。本以为这个季度不会再有新品发布的苹果&#xff0c;却用一张主打“同学们&#xff0c;来次课外活动吧”的神奇邀请函打消了所有人的怀疑。根据从…

最近火了的自动驾驶全球产业链全景图

来源&#xff1a;传感器技术摘要&#xff1a;目前自动驾驶已经发展的很快&#xff0c;除了特斯拉和奥迪以外&#xff0c;很多豪车都引进了自动驾驶技术。下面来盘点一下自动驾驶产业链&#xff1a;首先看一下自动驾驶的等级标准&#xff1a;1、英特尔&#xff1a;Mobileye Alt…

java get set 注解_java技能提升,用Lombok甩掉get和set,让代码变得更简洁

前言前几天有个新来的同事(实习生)惊讶的对我说&#xff1a;我们的代码里好多错误&#xff0c;我的程序本地都启动不了。我一脸懵逼的质问他&#xff1a;目前线上的代码&#xff0c;怎么会有问题吗&#xff1f;他不服气的说&#xff1a;你来看嘛&#xff0c;就是有问题&#xf…

.pfx 证书和 .cer 证书

证书系列&#xff1a; 1&#xff1a;.pfx 证书和 .cer 证书 2&#xff1a;导入pfx证书 通常情况下&#xff0c;作为文件形式存在的证书一般有三种格式&#xff1a; 第一种&#xff1a;带有私钥的证书&#xff0c;由Public Key Cryptography Standards #12&#xff0c;PKCS#1…