通过首次寻源运行脚本与有什么区别
source /venv/bin/activate
python script.py
并使用实际的python.exe运行脚本?
/venv/bin/python script.py
这两个命令总是做同样的事情吗?我看到的问题是,如果script.py调用其他python脚本,那么venv中的设置和包就不起作用。
这取决于script.py
如何运行其他脚本。如果它使用sys.executable
,也就是当前的python,/venv/bin/python
,那么这两个命令是等效的。
如果script.py
使用shell运行其他脚本(os.system
、subprocess
等(,则第一个脚本是首选形式,因为它为所有子进程设置了$PATH
,以便所有python脚本使用相同的虚拟环境。
还有最后一个音符。如果从script.py
运行的某些脚本具有固定的shebang(如#!/usr/bin/python
(,则无论以第一种或第二种方式运行script.py
,这些脚本都不会在虚拟环境中运行。