Python语言之杂货铺

Python虚拟环境

在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip安装到Python3的site-packages目录下。如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。

  • 已经装好python,并且配置好环境目录,在系统环境中添加如下变量名,并加入系统的Path中

1.通过pip install virtualenv –命令可以安装虚拟环境

安装命令:python -m pip install -i https://pypi.douban.com/simple/ virtualenv
卸载命令:python -m pip uninstall virtualenv

2.安装完成后可以通过 virtualenv + 名字 就可以创建虚拟环境,但是环境创建存放在当前命令行所在的根目录会创建对应的文件夹

带指定版本python的虚拟环境:virtualenv -p python版本的完整路径到.exe为止

3.安装虚拟环境管理工具(virtualenvwrapper):

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

python -m pip install -I https://pypi.douban.com/simple/ virtualenvwrapper-win

python -m pip install virtualenvwrapper-win

如果没有加-win出现不了workon的命令

1
此时virtualenvwrapper就可以使用了。virtualenvwrapper的基本使用方式:
  • 列出虚拟环境列表
    workon 或者 lsvirtualenvpytho

  • 新建虚拟环境
    mkvirtualenv [虚拟环境名称]
    或者 virtualenv -p /usr/bin/python2.7 [虚拟环境名字]

  • 启动/切换虚拟环境
    workon [虚拟环境名称]

  • 删除虚拟环境
    rmvirtualenv [虚拟环境名称]
    或者 Rmvirtualenv –python的exe文件目录 [虚拟环境名称]

  • 离开虚拟环境,和virutalenv一样的命令
    deactivate.bat

4.修改虚拟环境的默认目录,然后后面创建虚拟环境命令一定用(mkvirtualen,这样就可以使建立的虚拟环境存到指定文件夹。

打开环境变量,创建系统变量:变量名为:WORKON_HOME D:\foreign\Python\Evns:为要存放的位置

5.用命令行进入虚拟环境的目录文件

Workon –查看已经安装好的虚拟环境 workon + 虚拟环境名字 可以进入相应的虚拟环境

退出为deactivate.bat

Mkvirtualenv +新建虚拟环境名字 会在配置后的环境中生成虚拟环境

6.pycharm打开目录是 file中的设置选择对应的解释器

Anaconda的虚拟环境使用

Anaconda下载安装

https://anaconda.org/

使用Anaconda优势:

  • anaconda集成了机器学习所需的python科学计算库
  • 机器学习中模型实现所用python版本不一致,通过自带的管理工具Conda创建虚拟环境可以完成python2和python3的切换

选择合适自己的版本进行下载,下载完成进行软件安装,安装成功后,在开始菜单多出如下文件夹:
开始菜单
点击Anacodda Prompt,就是打开啦conda的命令提示符,如下显示:
命令提示符

管理conda

1
2
3
4
5
6
7
8
9
10
11
C:\Users\GoFisher
# 查看conda的版本信息
λ conda --version
conda 4.5.5

# 升级conda
C:\Users\GoFisher
λ conda update conda
Solving environment: done

# All requested packages already installed.

管理工作环境

conda完整的命令参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
λ conda create -h
usage: conda create [-h] [--shortcuts] [--no-shortcuts] [-y] [--dry-run] [-f]
[--file FILE] [--no-deps] [--only-deps] [-m] [-C]
[--use-local] [--offline] [--no-pin] [-c CHANNEL]
[--override-channels] [-n ENVIRONMENT | -p PATH] [-q]
[--copy] [-k] [--update-dependencies]
[--no-update-dependencies] [--channel-priority]
[--no-channel-priority] [--clobber] [--show-channel-urls]
[--no-show-channel-urls] [--download-only] [--json]
[--debug] [--verbose] [--clone ENV]
[--no-default-packages]
[package_spec [package_spec ...]]

Create a new conda environment from a list of specified packages. To use the created environment, use 'source activate envname' look in that directory first. This command requires either the -n NAME or -p PREFIX option.

Options:

positional arguments:
package_spec Packages to install or update in the conda
environment.

optional arguments:
-h, --help Show this help message and exit.
--shortcuts Install start menu shortcuts
--no-shortcuts Don't install start menu shortcuts
-y, --yes Do not ask for confirmation.
--dry-run Only display what would have been done.
-f, --force Force install (even when package already installed).
--file FILE Read package versions from the given file. Repeated
file specifications can be passed (e.g. --file=file1
--file=file2).
--no-deps Do not install, update, remove, or change
dependencies. This WILL lead to broken environments
and inconsistent behavior. Use at your own risk.
--only-deps Only install dependencies.
-m, --mkdir Create the environment directory if necessary.
-C, --use-index-cache
Use cache of channel index files, even if it has
expired.
--use-local Use locally built packages.
--offline Offline mode, don't connect to the Internet.
--no-pin Ignore pinned file.
-c CHANNEL, --channel CHANNEL
Additional channel to search for packages. These are
URLs searched in the order they are given (including
file:// for local directories). Then, the defaults or
channels from .condarc are searched (unless
--override-channels is given). You can use 'defaults'
to get the default packages for conda, and 'system' to
get the system packages, which also takes .condarc
into account. You can also use any name and the
.condarc channel_alias value will be prepended. The
default channel_alias is http://conda.anaconda.org/.
--override-channels Do not search default or .condarc channels. Requires
--channel.
-n ENVIRONMENT, --name ENVIRONMENT
Name of environment.
-p PATH, --prefix PATH
Full path to environment prefix.
-q, --quiet Do not display progress bar.
--copy Install all packages using copies instead of hard- or
soft-linking.
-k, --insecure Allow conda to perform "insecure" SSL connections and
transfers. Equivalent to setting 'ssl_verify' to
'false'.
--update-dependencies, --update-deps
Update dependencies. Overrides the value given by
`conda config --show update_deps`.
--no-update-dependencies, --no-update-deps
Don't update dependencies. Overrides the value given
by `conda config --show update_deps`.
--channel-priority, --channel-pri, --chan-pri
Channel priority takes precedence over package
version. Overrides the value given by `conda config
--show channel_priority`.
--no-channel-priority, --no-channel-pri, --no-chan-pri
Package version takes precedence over channel
priority. Overrides the value given by `conda config
--show channel_priority`.
--clobber Allow clobbering of overlapping file paths within
packages, and suppress related warnings.
--show-channel-urls Show channel urls. Overrides the value given by `conda
config --show show_channel_urls`.
--no-show-channel-urls
Don't show channel urls. Overrides the value given by
`conda config --show show_channel_urls`.
--download-only Solve an environment and ensure package caches are
populated, but exit prior to unlinking and linking
packages into the prefix.
--json Report all output as json. Suitable for using conda
programmatically.
--debug Show debug output.
--verbose, -v Use once for info, twice for debug, three times for
trace.
--clone ENV Path to (or name of) existing local environment.
--no-default-packages
Ignore create_default_packages in the .condarc file.

Examples:

conda create -n myenv sqlite

最常用的conda参数

1
2
3
4
5
6
7
8
# 默认创建在Anaconda下的envs文件中
conda create --name 项目名 python="python3.6(2.7)" numpy(可以安装指定名字的包名)
例如:conda create --name demoTest python=3.6

# 指定环境创建的路径,注意不能和--n参数一起使用
conda create -p "绝对路径+环境名" python="python3.6(2.7)" numpy(可以安装指定名字的包名)
例如:
conda create --name demo2 --path "C:\\Users\\GoFisher\\Desktop" pytho n=2.7

执行结果如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
C:\Users\GoFisher
λ conda create --name demoTest python=3.6
Solving environment: done

## Package Plan ##

environment location: D:\foreign\Python\py_version\Anaconda3.5\envs\demoTest

added / updated specs:
- python=3.6


The following packages will be downloaded:

package | build
---------------------------|-----------------
wheel-0.31.1 | py36_0 81 KB
setuptools-39.2.0 | py36_0 571 KB
pip-10.0.1 | py36_0 1.8 MB
python-3.6.6 | hea74fb7_0 21.6 MB
------------------------------------------------------------
Total: 24.0 MB

The following NEW packages will be INSTALLED:

certifi: 2018.4.16-py36_0
pip: 10.0.1-py36_0
python: 3.6.6-hea74fb7_0
setuptools: 39.2.0-py36_0
vc: 14-h0510ff6_3
vs2015_runtime: 14.0.25123-3
wheel: 0.31.1-py36_0
wincertstore: 0.2-py36h7fe50ca_0

Proceed ([y]/n)? y


Downloading and Extracting Packages
wheel-0.31.1 | 81 KB | ############# | 100%
setuptools-39.2.0 | 571 KB | ############# | 100%
pip-10.0.1 | 1.8 MB | ############# | 100%
python-3.6.6 | 21.6 MB | ############# | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use:
# > activate demoTest
#
# To deactivate an active environment, use:
# > deactivate
#
# * for power-users using bash, you must source
#

成功创建项目
测试项目

配置环境变量

配置环境变量

列出所有环境

1
conda info --envs

结果如下,带星号代表是当前所在的环境

1
2
3
4
5
6
λ conda info --envs
# conda environments:
#
C:\Users\GoFisher\Desktop\demo
base * D:\foreign\Python\py_version\Anaconda3.5
demoTest D:\foreign\Python\py_version\Anaconda3.5\envs\demoTest

切换环境

1
2
切换环境:deactive.bat
退出环境:active.bat

命令如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
C:\Users\GoFisher
λ conda info --envs
# conda environments:
#
C:\Users\GoFisher\Desktop\demo
base * D:\foreign\Python\py_version\Anaconda3.5
demoTest D:\foreign\Python\py_version\Anaconda3.5\envs\demoTest


C:\Users\GoFisher
λ activate.bat demoTest

C:\Users\GoFisher
(demoTest) λ pip list
Package Version
--------------- ---------
certifi 2018.4.16
cycler 0.10.0
kiwisolver 1.0.1
matplotlib 2.2.2
numpy 1.14.3
pip 10.0.1
pyparsing 2.2.0
python-dateutil 2.7.3
pytz 2018.4
setuptools 39.2.0
six 1.11.0
wheel 0.31.1
wincertstore 0.2
Cache entry deserialization failed, entry ignored

C:\Users\GoFisher
(demoTest) λ conda info --envs
# conda environments:
#
C:\Users\GoFisher\Desktop\demo
base D:\foreign\Python\py_version\Anaconda3.5
demoTest * D:\foreign\Python\py_version\Anaconda3.5\envs\demoTest


C:\Users\GoFisher
(demoTest) λ deactivate.bat
C:\Users\GoFisher
λ conda info --envs
# conda environments:
#
C:\Users\GoFisher\Desktop\demo
base * D:\foreign\Python\py_version\Anaconda3.5
demoTest D:\foreign\Python\py_version\Anaconda3.5\envs\demoTest

复制环境

1
conda create --name 新复制的名称 --clone 被复制的环境

复制demoTest环境,名字为demoTestcopy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
C:\Users\GoFisher
λ conda create --name demoTestcopy --clone demoTest
Source: D:\foreign\Python\py_version\Anaconda3.5\envs\demoTest
Destination: D:\foreign\Python\py_version\Anaconda3.5\envs\demoTestcopy
Packages: 8
Files: 0
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate demoTestcopy
#
# To deactivate an active environment, use
#
# $ conda deactivate
C:\Users\GoFisher
λ conda info --envs
# conda environments:
#
C:\Users\GoFisher\Desktop\demo
base * D:\foreign\Python\py_version\Anaconda3.5
demoTest D:\foreign\Python\py_version\Anaconda3.5\envs\demoTest
demoTestcopy D:\foreign\Python\py_version\Anaconda3.5\envs\demoTestcopy

此时多出一个复制的环境名称为demoTestcopy

删除环境

1
conda remove --name 环境名 --all

操作如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
C:\Users\GoFisher
λ conda remove -n demoTestcopy --all

Remove all packages in environment D:\foreign\Python\py_version\Anaconda3.5\envs\demoTestcopy:


## Package Plan ##

environment location: D:\foreign\Python\py_version\Anaconda3.5\envs\demoTestcopy


The following packages will be REMOVED:

certifi: 2018.4.16-py36_0
pip: 10.0.1-py36_0
python: 3.6.6-hea74fb7_0
setuptools: 39.2.0-py36_0
vc: 14-h0510ff6_3
vs2015_runtime: 14.0.25123-3
wheel: 0.31.1-py36_0
wincertstore: 0.2-py36h7fe50ca_0

Proceed ([y]/n)? y


C:\Users\GoFisher
λ conda info --envs
# conda environments:
#
C:\Users\GoFisher\Desktop\demo
base * D:\foreign\Python\py_version\Anaconda3.5
demoTest D:\foreign\Python\py_version\Anaconda3.5\envs\demoTest

管理Python版本

conda把python视为其中的一个包,通过conda可以很方便的进行管理。

查看python版本

1
conda search --full-name python

结果如下,可以在创建虚拟环境的时候用过python的参数选择以下的python版本进行安装。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
C:\Users\GoFisher
λ conda search --full-name python
Loading channels: done
# Name Version Build Channel
python 2.6.8 5 pkgs/free
python 2.6.8 6 pkgs/free
python 2.6.9 0 pkgs/free
python 2.6.9 1 pkgs/free
python 2.7.3 2 pkgs/free
python 2.7.3 3 pkgs/free
python 2.7.3 4 pkgs/free
python 2.7.3 5 pkgs/free
python 2.7.3 6 pkgs/free
python 2.7.3 7 pkgs/free
python 2.7.4 0 pkgs/free
python 2.7.5 0 pkgs/free
python 2.7.5 1 pkgs/free
python 2.7.5 2 pkgs/free
python 2.7.6 0 pkgs/free
python 2.7.6 2 pkgs/free
python 2.7.7 0 pkgs/free
python 2.7.7 1 pkgs/free
python 2.7.7 2 pkgs/free
python 2.7.8 0 pkgs/free
python 2.7.9 0 pkgs/free
python 2.7.9 1 pkgs/free
python 2.7.10 0 pkgs/free
python 2.7.10 1 pkgs/free
python 2.7.10 3 pkgs/free
python 2.7.10 4 pkgs/free
python 2.7.10 5 pkgs/free
python 2.7.11 0 pkgs/free
python 2.7.11 1 pkgs/free
python 2.7.11 2 pkgs/free
python 2.7.11 4 pkgs/free
python 2.7.11 5 pkgs/free
python 2.7.12 0 pkgs/free
python 2.7.13 0 pkgs/free
python 2.7.13 1 pkgs/free
python 2.7.13 h1b6d89f_16 pkgs/main
python 2.7.13 h9912b81_15 pkgs/main
python 2.7.13 hb034564_12 pkgs/main
python 2.7.14 h2765ee6_18 pkgs/main
python 2.7.14 h3e68818_15 pkgs/main
python 2.7.14 h4084c39_22 pkgs/main
python 2.7.14 h4a10d90_30 pkgs/main
python 2.7.14 h4a10d90_31 pkgs/main
python 2.7.14 h59f5a59_20 pkgs/main
python 2.7.14 h819644d_16 pkgs/main
python 2.7.14 h8c3f1cb_23 pkgs/main
python 2.7.15 he216670_0 pkgs/main
python 3.3.0 4 pkgs/free
python 3.3.1 0 pkgs/free
python 3.3.2 0 pkgs/free
python 3.3.3 0 pkgs/free
python 3.3.4 0 pkgs/free
python 3.3.5 0 pkgs/free
python 3.3.5 1 pkgs/free
python 3.3.5 2 pkgs/free
python 3.4.0 0 pkgs/free
python 3.4.1 0 pkgs/free
python 3.4.1 1 pkgs/free
python 3.4.1 2 pkgs/free
python 3.4.2 0 pkgs/free
python 3.4.2 1 pkgs/free
python 3.4.3 0 pkgs/free
python 3.4.3 3 pkgs/free
python 3.4.3 4 pkgs/free
python 3.4.3 5 pkgs/free
python 3.4.4 0 pkgs/free
python 3.4.4 1 pkgs/free
python 3.4.4 2 pkgs/free
python 3.4.4 4 pkgs/free
python 3.4.4 5 pkgs/free
python 3.4.5 0 pkgs/free
python 3.5.0 0 pkgs/free
python 3.5.0 1 pkgs/free
python 3.5.0 2 pkgs/free
python 3.5.0 3 pkgs/free
python 3.5.0 4 pkgs/free
python 3.5.1 0 pkgs/free
python 3.5.1 1 pkgs/free
python 3.5.1 2 pkgs/free
python 3.5.1 4 pkgs/free
python 3.5.1 5 pkgs/free
python 3.5.2 0 pkgs/free
python 3.5.3 0 pkgs/free
python 3.5.3 2 pkgs/free
python 3.5.3 3 pkgs/free
python 3.5.4 0 pkgs/free
python 3.5.4 h1357f44_23 pkgs/main
python 3.5.4 hc495aa9_21 pkgs/main
python 3.5.4 hd3c4935_11 pkgs/main
python 3.5.4 hdec4e59_20 pkgs/main
python 3.5.4 hedc2606_15 pkgs/main
python 3.5.5 h0c2934d_0 pkgs/main
python 3.5.5 h0c2934d_1 pkgs/main
python 3.5.5 h0c2934d_2 pkgs/main
python 3.6.0 0 pkgs/free
python 3.6.1 0 pkgs/free
python 3.6.1 2 pkgs/free
python 3.6.2 0 pkgs/free
python 3.6.2 h09676a0_15 pkgs/main
python 3.6.2 h6679aeb_11 pkgs/main
python 3.6.3 h210ce5f_2 pkgs/main
python 3.6.3 h3389d20_0 pkgs/main
python 3.6.3 h3b118a2_4 pkgs/main
python 3.6.3 h9e2ca53_1 pkgs/main
python 3.6.4 h0c2934d_2 pkgs/main
python 3.6.4 h0c2934d_3 pkgs/main
python 3.6.4 h6538335_0 pkgs/main
python 3.6.4 h6538335_1 pkgs/main
python 3.6.5 h0c2934d_0 pkgs/main
python 3.6.6 hea74fb7_0 pkgs/main
python 3.7.0 hea74fb7_0 pkgs/main

Python包管理

列出已安装的包及其版本号

1
conda list

查看所有conda支持的包

http://docs.continuum.io/anaconda/pkg-docs.html

搜索包

检测该包是否存在

1
conda search beautifulsoup4

安装一个包

将beautifulsoup4包安装到指定环境bunnies中

1
conda install --name bunnies beautifulsoup4

Tip: 如果未指定安装环境,包将被安装到当前环境

从Anaconda.org安装一个包

anaconda.org是性质和github.com差不多的一个网站,但并不允许通过注册来下载里边的文件,我们只能通过以下命令来安装一个anaconda.org里存在的包,以安装bottleneck包为例:

1
conda isntall --channel https://conda.anaconda.org/pandas bottleneck

通过pip安装一个包

如果要安装一个conda或者anaconda.org不支持的包,可以通过较为普遍的pip包管理工具进行安装,但是pip并不能管理环境、升级python
Tip:anaconda和miniconda已集成pip,不需要单独安装。
下面命令将安装see包:

pip install see

虚拟环境与Pycharm的结合使用

        当创建好一个虚拟环境后,可以通过与pycharm结合,使项目纯净的开发环境,同时提高效率。
pycharm1
1.从File菜单打开Setting设置

pycharm2
2.点击Add,在Existing environment中找到envs的虚拟环境

pycharm3
3.确认后,显示已安装的第三方库。

  • 本文作者:YuJianZhe
  • 本文标签:Python语言之杂货铺
  • 本文链接: 2018/07/06/Python语言/
  • 发布时间: 2018年7月6日 - 10时07分
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!
Donate comment here