Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在单个python文件中导入Python2和Python3模块,以便有条件地执行_Python 3.x_Python 2.7_Function_Import - Fatal编程技术网

Python 3.x 在单个python文件中导入Python2和Python3模块,以便有条件地执行

Python 3.x 在单个python文件中导入Python2和Python3模块,以便有条件地执行,python-3.x,python-2.7,function,import,Python 3.x,Python 2.7,Function,Import,我试图在一个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() 这个版本可以使用Python 3解释器,但是如果我切换到Python 2,它就会崩溃。对于P

我试图在一个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()
这个版本可以使用Python 3解释器,但是如果我切换到Python 2,它就会崩溃。对于Python2,我使用scripts文件夹中的
\uuuu init\uuuuu.py
创建了一个变通方法,但当我切换回Python3时,它破坏了该版本

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

有没有办法做到这一点


谢谢大家。

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

.
├── app
│   ├── __init__.py
│   └── a.py
└── scripts
    ├── __init__.py
    ├── b.py
    └── c.py
%python3-m app.a
你好,Python 3!
%python-m app.a
你好,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

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

您的初始化文件都是空的吗?我没有收到名为“scripts”的模块。如果我不创建应用程序目录,并将脚本
\uuuu init\uuuuuuuuuuuupy
留空,它对我有效。谢谢你的帮助