我正在使用 avirtualenv
来执行一个脚本,在这个脚本中我调用:
os.system('python anotherScript.py')
我的问题是脚本是否与virtualenv
调用者脚本相同?
我正在使用 avirtualenv
来执行一个脚本,在这个脚本中我调用:
os.system('python anotherScript.py')
我的问题是脚本是否与virtualenv
调用者脚本相同?
很难说,但是如果你在一个激活的 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 的版本,你就很好。
例如使用 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)