Dra*_*uan 53 python virtualenv
我检查了激活脚本,它看起来我所做的一切是:
如何virtualenv
通过这些提供神奇的虚拟环境?我错过了什么?
Max*_*Max 51
我将描述基本过程,我从@jcollado链接到的演示文稿中学到了这一过程.
当Python启动时,它会查看二进制文件的路径及其前缀.
所以,让我们说你的virtualenv是/home/blah/scratch
.Python进程知道它是从/home/blah/scratch/bin/python
(它通常只是你的系统python二进制文件的副本/usr/bin/python
)执行的,并且它知道它自己的版本,X.Y
因为它被编译到它中.然后Python lib/pythonX.Y/os.py
按以下顺序查找:
/home/blah/scratch/bin/lib/pythonX.Y/os.py
/home/blah/scratch/lib/pythonX.Y/os.py <-- this file should exist
/home/blah/lib/pythonX.Y/os.py
/home/lib/pythonX.Y/os.py
/lib/pythonX.Y/os.py
Run Code Online (Sandbox Code Playgroud)
它停在/home/blah/scratch/lib/pythonX.Y/os.py
因为它是第一个实际存在的文件.如果没有,Python会继续寻找.然后sys.prefix
基于此设置.它使用类似的过程进行设置sys.exec_prefix
,然后sys.path
根据这些过程构建.
cla*_*800 13
virtualenv myenv
.这将创建一个名为myenv的目录,并将系统python二进制文件复制到myenv/bin.它还为myenv添加了其他必要的文件和目录,包括bin/activate中的安装脚本和模块和包的lib子目录.. myenv/bin/activate
,它将shell的PATH
环境变量设置为以myenv/bin开头.python
从这个shell 运行时,它将执行存储在myenv/bin中的二进制文件的副本.尽管二进制文件与/ usr/bin/python中的二进制文件相同,但标准python二进制文件旨在搜索与二进制文件路径相关的目录中的包和模块(此功能与virtualenv无关).它在../lib/pythonX.Y中查找,其中X和Y是python二进制文件的主要和次要版本号.所以现在它正在寻找myenv/lib/pythonX.Y.pip
,这样当用户安装使用PIP从virtualenv中新的软件包,它们将被安装在myenv/lib目录/ pythonX.Y 归档时间: |
|
查看次数: |
14603 次 |
最近记录: |