我有两个python脚本,第一个(script1)与python2和第二个一起使用 (script2)适用于python3。
它们是我自己没有编写的两个代码,我尝试使用python3运行第一个代码,或者使用python2运行第二个代码,它不会工作。
我需要的是从script2多次调用script1(所以在script2中,我需要调用script1并传递一些参数,如x,y)
所以肯定是因为script1应该在python2中运行而script2应该在python3中运行,我需要改变运行环境。
我试过了:
os.system("source activate py3") #py3 is a virtualenv in which python3 is installed
#running codes on python3
os.system("source deactivate py3")
script1.main(x, y)
然而,似乎它不起作用。如果我运行python3 script2.py
一切都将基于python3运行,如果我运行python script2.py
,一切都将基于python2运行。
所以这意味着编写os.system(“更改python版本环境的命令”)将不起作用。
还有其他解决办法吗?
感谢您的考虑。 在advnace中感谢
答案 0 :(得分:1)
os.system("source activate py3") #py3 is a virtualenv in which python3 is installed
您已运行shell命令:source activate py3
。那个shell命令只能在调用os.system
中有效。它没有做太多的工作,一旦结束,你的脚本就会在解释器内部继续进行,而解释器已经是你的python2
所以:
#running codes on python3
os.system("source deactivate py3")
代码在<{1}}上运行 NOT ,因为您对python3
所做的任何操作只能在该调用中产生效果。
一个选项
os.system
您的os.system('mypy3.sh')
将如下所示
mypy3.sh