我使用virtualenv
执行脚本,在此脚本中我调用:
os.system('python anotherScript.py')
我的问题是脚本是否与调用者脚本在同一个virtualenv
中执行?
答案 0 :(得分:3)
很难说,但如果您在激活的virtualenv下运行此脚本,那么您应该处于该虚拟环境之下。您可以通过
验证您的想法#script.py
import os
os.system('which python')
和命令行
virtualenv newvirtualenv
source newvirtualenv/bin/activate
(newvirtualenv) user@ubuntu: python script.py
你应该看到它在newvirtualenv/bin/python
通常,您希望使用exectuable标头来使用当前环境:
#!/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的版本,就可以了。
答案 1 :(得分:0)
例如使用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)