为什么venv没有自动运行?

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

根据

https:/docs.python.org3tutorialvenv.html。

https:/docs.python.org3libraryvenv.html。

在运行脚本之前,你不应该明确地激活一个已创建的虚拟环境。

"你不需要特别激活一个环境;激活只是将虚拟环境的二进制目录预先加入到你的路径中,这样 "python "就会调用虚拟环境的Python解释器,你就可以运行已安装的脚本而不必使用它们的完整路径。然而,所有安装在虚拟环境中的脚本都可以在不激活它的情况下运行。,并与虚拟环境的Python自动运行"。

然而,情况似乎并非如此。

    ➜  Python git:(master) ✗ mkdir project
    ➜  Python git:(master) ✗ python3.8 -m venv project/venv     
    ➜  Python git:(master) ✗ echo """import delorean
    print(\"Hello\")""" > project/testing.py
    ➜  Python git:(master) ✗ source project/venv/bin/activate   
    (venv) ➜  Python git:(master) ✗ pip3.8 install delorean       
    Collecting delorean
      ...
      Running setup.py install for delorean ... done
    Successfully installed babel-2.8.0 delorean-1.0.0 humanize-2.4.0 python-dateutil-2.8.1 pytz-2020.1 six-1.15.0 tzlocal-2.1
    WARNING: You are using pip version 19.2.3, however version 20.1.1 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.
    (venv) ➜  Python git:(master) ✗ python3.8 project/testing.py   
    Hello
    (venv) ➜  Python git:(master) ✗ deactivate
    ➜  Python git:(master) ✗ cd project 
    ➜  project git:(master) ✗ python3.8 testing.py 
    Traceback (most recent call last):
      File "testing.py", line 1, in <module>
        import delorean
    ModuleNotFoundError: No module named 'delorean'
    ➜  project git:(master) ✗ 

当我明确地激活虚拟环境时,事情就像预期的那样工作,但是当我在我的项目中而不这样做时,虚拟环境似乎没有修改执行,尽管文档暗示了什么。

我是不是误解了什么?

python-3.x python-venv
1个回答
0
投票

文档中明确指出

你不需要特别激活一个环境,激活只是把虚拟环境的二进制目录预先写到你的路径上。激活只是把虚拟环境的二进制目录预先加入到你的路径中去。这样,"python "就会调用虚拟环境的Python解释器,你就可以运行安装的脚本,而不必使用它们的完整路径。然而,所有安装在虚拟环境中的脚本都应该可以在不激活它的情况下运行,并自动与虚拟环境的Python一起运行。

你必须手动添加venv的二进制路径到你的 途径 变量并将其导出。

如果你检查 激活 文件,你可以看到它只是将venv二进制位置添加到你的路径中。

VIRTUAL_ENV="/home/user2/venv"
export VIRTUAL_ENV

_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH
© www.soinside.com 2019 - 2024. All rights reserved.