如何运行python脚本,导入必须使用不同版本的python运行的其他2个python脚本

时间:2016-02-22 15:04:13

标签: python bash

我有两个脚本a.py和b.py。

a.py运行python3,b.py运行python2.7。

现在我想在一个名为c.py的新脚本中导入这两个脚本并运行c.py.我究竟应该如何做到这一点。我该如何告诉bash使用哪个版本的脚本。我的默认linux python版本是2.7。向你求助。

4 个答案:

答案 0 :(得分:4)

如果要将a.pyb.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_functiondivision

这样你就可以毫无问题地在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")