Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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 venv_Python_Virtualenv - Fatal编程技术网

从脚本中使用Python venv

从脚本中使用Python venv,python,virtualenv,Python,Virtualenv,创建虚拟环境后,如果有一个shell脚本调用: /home/user/venv/python3 <scriptname> /home/user/venv/python3 它如何知道virtualenv的site packages文件夹在哪里,而不将源代码激活到virtualenv(从而更改路径)?Python查看站点包的sys.path中的值,当您通过站点包执行python3或Python时,会自动设置这些值。在初始化期间导入(除非通过-S标志抑制) 您可以参考软件包文档以了解有

创建虚拟环境后,如果有一个shell脚本调用:

/home/user/venv/python3 <scriptname>
/home/user/venv/python3

它如何知道virtualenv的site packages文件夹在哪里,而不将源代码激活到virtualenv(从而更改路径)?

Python查看站点包的
sys.path
中的值,当您通过
站点
包执行
python3
Python
时,会自动设置这些值。在初始化期间导入(除非通过
-S
标志抑制)


您可以参考软件包文档以了解有关如何执行此操作的更多详细信息。

Python查看站点软件包的
sys.path
中的值,这些值在您执行
python3
Python
时由
站点
软件包自动设置。在初始化期间导入(除非通过
-S
标志抑制)

您可以参考软件包文档,以了解有关如何实现这一点的更多详细信息。

这一神奇的事情发生在

注意:如果虚拟环境生效,此值将在
site.py
中更改,以指向虚拟环境。Python安装的值仍然可以通过
base\u prefix
获得

站点
模块在解释器启动时导入(从系统路径!),并且

您可以通过使用
-S
标志执行python REPL来禁用导入站点模块,从而自己验证这一点。您将发现,安装在virtualenv中的软件包不再可以通过导入语句看到(假设它们尚未安装在系统站点软件包中)

您的下一个问题可能是“但网站本身如何知道我们是否处于venv中?”答案是:

虚拟环境是一个目录树,其中包含Python可执行文件和其他表明它是虚拟环境的文件

如果名为“pyvenv.cfg”的文件存在于sys.executable上方的一个目录中,
sys.prefix
sys.exec\u prefix
设置为该目录。已实施。

这一魔术发生在

注意:如果虚拟环境生效,此值将在
site.py
中更改,以指向虚拟环境。Python安装的值仍然可以通过
base\u prefix
获得

站点
模块在解释器启动时导入(从系统路径!),并且

您可以通过使用
-S
标志执行python REPL来禁用导入站点模块,从而自己验证这一点。您将发现,安装在virtualenv中的软件包不再可以通过导入语句看到(假设它们尚未安装在系统站点软件包中)

您的下一个问题可能是“但网站本身如何知道我们是否处于venv中?”答案是:

虚拟环境是一个目录树,其中包含Python可执行文件和其他表明它是虚拟环境的文件

如果名为“pyvenv.cfg”的文件存在于sys.executable上方的一个目录中,
sys.prefix
sys.exec\u prefix
设置为该目录。执行