Python 虚拟环境和`sys.path`

问题描述 投票:0回答:1

我使用

创建了一个虚拟环境
python -m venv venv

现在我打开一个Python shell,而不通过运行激活虚拟环境

import sys
print(sys.path, sys.prefix)

我明白了

['', '/usr/lib/python312.zip', '/usr/lib/python3.12', '/usr/lib/python3.12/lib-dynload', '/usr/lib/python3.12/site-packages'] /usr

这正是我所期待的。

如果我激活环境,输出是

['', '/usr/lib/python312.zip', '/usr/lib/python3.12', '/usr/lib/python3.12/lib-dynload', '/home/myname/mypath/venv/lib/python3.12/site-packages'] /home/myname/Projects/pypath/venv

让我很沮丧的是,即使在 venv 内部,解释器似乎也是首先在系统范围的位置中搜索包,然后才在 venv 目录中搜索包。 这是真的吗?

python python-3.x python-venv pyvenv
1个回答
0
投票
这是真的吗?

不。系统包位于
/usr/lib/python3.12/site-packages

,当你在 venv“内部”时,它根本不存在。

venv-site 之前的路径(在您的例子中是 

/home/myname/mypath/venv/lib/python3.12/site-packages

)用于标准库导入。

    

© www.soinside.com 2019 - 2024. All rights reserved.