Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python和virtualenv—为什么使用Python版本命名子目录?_Python_Virtualenv_Python Internals - Fatal编程技术网

Python和virtualenv—为什么使用Python版本命名子目录?

Python和virtualenv—为什么使用Python版本命名子目录?,python,virtualenv,python-internals,Python,Virtualenv,Python Internals,为什么virtualenv创建机制坚持使用Python版本命名子目录?我指的是类似于test\u-venv/venv3/lib/>>python3.6的东西,它与: 运行此命令将创建目标目录。。。并创建(最初为空)lib/pythonX.Y/site-packages(或Windows上的lib\site-packages)子目录 如果你好奇的话,这就是实现它的cpython 至于原因:它反映了搜索路径是如何从sys.prefix构建的(正如在Windows上所指出的(并反映在规范和代码中)行为

为什么virtualenv创建机制坚持使用Python版本命名子目录?我指的是类似于
test\u-venv/venv3/lib/>>python3.6的东西,它与:

运行此命令将创建目标目录。。。并创建(最初为空)lib/pythonX.Y/site-packages(或Windows上的lib\site-packages)子目录

如果你好奇的话,这就是实现它的cpython

至于原因:它反映了搜索路径是如何从
sys.prefix
构建的(正如在Windows上所指出的(并反映在规范和代码中)行为(在本例中,这将由您的venv中python可执行文件的位置决定)。其决议在中实施,并且在注释中包含更详细的描述

长话短说:它允许venv相对轻松地使用现有代码处理它所需的所有搜索路径工作。

它与以下内容一致:

运行此命令将创建目标目录。。。并创建(最初为空)lib/pythonX.Y/site-packages(或Windows上的lib\site-packages)子目录

如果你好奇的话,这就是实现它的cpython

至于原因:它反映了搜索路径是如何从
sys.prefix
构建的(正如在Windows上所指出的(并反映在规范和代码中)行为(在本例中,这将由您的venv中python可执行文件的位置决定)。其决议在中实施,并且在注释中包含更详细的描述


长话短说:它允许venv相对容易地使用现有代码来处理它需要的所有搜索路径工作。

因为系统可以使用很少版本的python,所以命名约定允许区分站点包文件夹


如果python解释器是从virtualev或普通安装启动的,然后选择正确的路径,那么在virtualenv中保持这种命名约定比签入代码更容易

因为系统可以使用很少版本的python,所以命名约定允许区分站点包文件夹


如果python解释器是从virtualev或普通安装启动的,然后选择正确的路径,那么在virtualenv中保持这种命名约定比签入代码更容易

奇怪的是,在Windows上,路径是
ENV/Lib/site-packages
。但是,文件中确实说了
ENV/lib/pythonX.X/site-packages/
。现在我想知道为什么不同操作系统之间的不一致性…@azalea这似乎好得多,这就是为什么我想知道为什么macOS和Linux会这样。这不是对你问题的回答,但你可以得到站点包的路径,不管它在哪里。请参阅:奇怪的是,在Windows上,路径是
ENV/Lib/site-packages
。但是,文件中确实说了
ENV/lib/pythonX.X/site-packages/
。现在我想知道为什么不同操作系统之间的不一致性…@azalea这似乎好得多,这就是为什么我想知道为什么macOS和Linux会这样。这不是对你问题的回答,但你可以得到站点包的路径,不管它在哪里。见:
./venv2/
├── bin
├── include
│   └── python2.7 -> /opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
└── lib
    └── python2.7
        ├── config -> /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config
        ├── distutils
        ├── encodings -> /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings
        ├── lib-dynload -> /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload
        └── site-packages
./venv3/
├── bin
├── include
└── lib
    └── python3.6
        └── site-packages