我有两个脚本a.py和b.py。
a.py运行python3,b.py运行python2.7。
现在我想在一个名为c.py的新脚本中导入这两个脚本并运行c.py.我究竟应该如何做到这一点。我该如何告诉bash使用哪个版本的脚本。我的默认linux python版本是2.7。向你求助。
答案 0 :(得分:4)
如果要将a.py
和b.py
导入c.py
,则必须为c.py
选择一个 Python版本。这可能必须是Python 3.所以你必须将b.py
移植到Python 3。
这与shell无关。
答案 1 :(得分:1)
你实际上不能这样做,即调用另一个文件中的文件,因为另外两个文件a.py和b.py是两个不同版本的Python。
2.7.x和3.4.x中的语法完全不同,这就是原因。
答案 2 :(得分:1)
您可以修改a.py
和/或b.py
,使其在python 2或3中工作,无论添加__future__
导入,当然您无法使用python 3独占函数注释或yield from
from __future__ import print_function, division, absolute_import, unicode_literals
#everyting else
或者只是导入您需要的版本之间不同的功能,例如print_function
或division
这样你就可以毫无问题地在python 2中打开a.py.
此外,如果您导入其他内容,则必须在两个版本中安装所有相同的软件包
您也可以将其添加到a.py
try: #python 2
from itertools import ifilter as filter, imap as map, izip as zip
except ImportError:
#python 3
pass
try: #python 2
range = xrange
except NameError:
#python 3
pass
如果您使用其中任何一个,那么它们在python 3和2中的工作方式相同
答案 3 :(得分:0)
如果您想按顺序运行它们:
python2.7 a.py && python3.4 b.py
如果您想同时运行它们:
python2.7 a.py & python3.4 b.py
(假设a.py
是一个python 2.7脚本而b.py
是一个python 3.4 one)
如果您想要一个新脚本,您可以尝试以下内容:
import subprocess
subprocess.Popen("python2.7 a.py && python3.4 b.py")