3

我正在使用 avirtualenv来执行一个脚本,在这个脚本中我调用:

os.system('python anotherScript.py')

我的问题是脚本是否与virtualenv调用者脚本相同?

4

2 回答 2

4

很难说,但是如果你在一个激活的 virtualenv 下运行这个脚本,你应该在那个 virutla 环境下。您可以通过以下方式验证您的想法

#script.py
import os
os.system('which python')

并从命令行

virtualenv newvirtualenv
source newvirtualenv/bin/activate
(newvirtualenv) user@ubuntu: python script.py

你应该看到它在下面newvirtualenv/bin/python

通常,您希望放置一个可执行标头以使用当前环境:

#!/usr/bin/env python
import os
os.system('which python')

这不是说使用newvirtualenv,而是让你更有信心,如果在脚本下执行newvirtualenv,它肯定会newvirtualenv

如果/usr/bin/python在virtualenv下使用这个还是可以的。但是对于高级程序员来说,他们往往会有多个虚拟环境和多个 python 版本。所以根据他们所在的位置,他们可以根据环境变量执行脚本。只是一个小小的收获。

如果您运行newvirtualenv/bin/python script.py它,它将在 virtualenv 下。

只要python二进制文件指向 virtualenv 的版本,你就很好。

于 2013-02-12T18:13:55.020 回答
-1

例如使用 anaconda 管理虚拟环境,在 Pycharm IDE 中:

os.system('which python') # /usr/bin/python
command = 'python3 xxxx.py' 
os.system(command) # make /usr/bin/python as interpreter

如果我想使用安装在某些虚拟环境中的一些模块(例如 cv2),

command = '/path/to/anaconda3/envs/your_env_name/bin/python3 xxxx.py' 
os.system(command) 
于 2020-09-30T07:03:02.623 回答