[英]execute os.system('python ') inside a virtualenv
我正在使用virtualenv
来执行脚本,在这个脚本中我调用:
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
通常,您希望放置一个 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 的版本,你就很好。
例如使用 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.