在单个python文件中同时导入python 2和3模块以进行条件执行

问题描述

我试图像这样在单个python脚本中有条件地执行两个python脚本。

# main.py
import sys
if sys.version_info[0] > 2:
    from scripts.script3 import script3
    script3()
else:
    from scripts.script2 import script2
    script2()

此版本可与Python3解释器一起使用,但如果我切换到Python 2,它将中断。对于Python2,我在scripts文件夹中使用__init__.py进行了工作,但是当我切换回Python3时,它破坏了该版本。

main.py
/ scripts /
├──script2.py(Python2)
└──script3.py(Python3)

有没有办法做到这一点?

谢谢。

解决方法

通过以下目录布局,我想我已经完成了您想做的事情:

.
├── app
│   ├── __init__.py
│   └── a.py
└── scripts
    ├── __init__.py
    ├── b.py
    └── c.py
% python3 -m app.a
Hello,Python 3!
% python -m app.a
Good day,Python 2.

app/a.py看起来像这样:

import sys

if sys.version_info[0] > 2:
    from scripts.b import fun
else:
    from scripts.c import fun

fun()

编辑:如果您希望使用最少的功能,则以下内容也可以使用:

.
├── a.py
└── scripts
    ├── __init__.py
    ├── b.py
    └── c.py

然后,您可以仅使用a.py(或python a.py)运行python3 a.py

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...