10.14 创建新的Python环境¶
问题¶
ä½ æƒ³åˆ›å»ºä¸€ä¸ªæ–°çš„Python环境,用æ�¥å®‰è£…模å�—和包。 ä¸�è¿‡ï¼Œä½ ä¸�想安装一个新的Python克隆,也ä¸�想对系统Python环境产生影å“�。
解决方案¶
ä½ å�¯ä»¥ä½¿ç”¨ pyvenv 命令创建一个新的“虚拟â€�环境。
这个命令被安装在Python解释器å�Œä¸€ç›®å½•,或Windows上é�¢çš„Scripts目录ä¸ã€‚下é�¢æ˜¯ä¸€ä¸ªä¾‹å�:
bash % pyvenv Spam
bash %
ä¼ ç»™ pyvenv 命令的å��å—æ˜¯å°†è¦�被创建的目录å��。当被创建å�Žï¼ŒSpan目录åƒ�下é�¢è¿™æ ·ï¼š
bash % cd Spam
bash % ls
bin include lib pyvenv.cfg
bash %
在bin目录ä¸ï¼Œä½ 会找到一个å�¯ä»¥ä½¿ç”¨çš„Python解释器:
bash % Spam/bin/python3
Python 3.3.0 (default, Oct 6 2012, 15:45:22)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from pprint import pprint
>>> import sys
>>> pprint(sys.path)
['',
'/usr/local/lib/python33.zip',
'/usr/local/lib/python3.3',
'/usr/local/lib/python3.3/plat-darwin',
'/usr/local/lib/python3.3/lib-dynload',
'/Users/beazley/Spam/lib/python3.3/site-packages']
>>>
这个解释器的特点就是他的site-packages目录被设置为新创建的环境。 å¦‚æžœä½ è¦�安装第三方包,它们会被安装在那里,而ä¸�是通常系统的site-packages目录。
讨论¶
创建虚拟环境通常是为了安装和管�第三方包。
æ£å¦‚ä½ åœ¨ä¾‹å�ä¸çœ‹åˆ°çš„é‚£æ ·ï¼Œsys.path å�˜é‡�包å�«æ�¥è‡ªäºŽç³»ç»ŸPython的目录,
而 site-packages目录已�被�定�到一个新的目录。
有了一个新的虚拟环境,下一æ¥å°±æ˜¯å®‰è£…一个包管ç�†å™¨ï¼Œæ¯”如distribute或pip。 ä½†å®‰è£…è¿™æ ·çš„å·¥å…·å’ŒåŒ…çš„æ—¶å€™ï¼Œä½ éœ€è¦�ç¡®ä¿�ä½ ä½¿ç”¨çš„æ˜¯è™šæ‹ŸçŽ¯å¢ƒçš„è§£é‡Šå™¨ã€‚ 它会将包安装到新创建的site-packages目录ä¸åŽ»ã€‚
尽管一个虚拟环境看上去是Python安装的一个å¤�制, ä¸�过它实际上å�ªåŒ…å�«äº†å°‘é‡�å‡ ä¸ªæ–‡ä»¶å’Œä¸€äº›ç¬¦å�·é“¾æŽ¥ã€‚ æ‰€æœ‰æ ‡å‡†åº“å‡½æ–‡ä»¶å’Œå�¯æ‰§è¡Œè§£é‡Šå™¨éƒ½æ�¥è‡ªåŽŸæ�¥çš„Python安装。 å› æ¤ï¼Œåˆ›å»ºè¿™æ ·çš„çŽ¯å¢ƒæ˜¯å¾ˆå®¹æ˜“çš„ï¼Œå¹¶ä¸”å‡ ä¹Žä¸�会消耗机器资æº�。
默认情况下,虚拟环境是空的,ä¸�包å�«ä»»ä½•é¢�å¤–çš„ç¬¬ä¸‰æ–¹åº“ã€‚å¦‚æžœä½ æƒ³å°†ä¸€ä¸ªå·²ç»�安装的包作为虚拟环境的一部分, å�¯ä»¥ä½¿ç”¨â€œâ€“system-site-packagesâ€�选项æ�¥åˆ›å»ºè™šæ‹ŸçŽ¯å¢ƒï¼Œä¾‹å¦‚ï¼š
bash % pyvenv --system-site-packages Spam
bash %
跟多关于 pyvenv 和虚拟环境的信��以�考
PEP 405.