【问题标题】:In a script using Python 3.x, importing other script using Python 2.7, how to make that specific script running with 2.7 separately when importing it?在使用 Python 3.x 的脚本中,使用 Python 2.7 导入其他脚本,导入时如何使该特定脚本与 2.7 单独运行?
【发布时间】:2017-10-25 21:47:10
【问题描述】:

在运行 Python 3.x 的 python 脚本中,导入另一个运行 Python 2.7 的 python 脚本,是否可以在导入该特定脚本时告诉程序使用 Python 2.7 解释器?

在这个使用 Python 3.x 运行的“mainfile.py”中

导入另一个文件27

“anotherfile27.py”一导入,一切都会自动运行,“anotherfile27.py”中的任何功能都不需要在“mainfile.py”中重用。只会生成几个 .csv 脚本以供以后使用。

是否可以在“anotherfile27.py”或“mainfile.py”中编写一行代码来告诉程序仅在运行“anotherfile27.py”时将解释器从 Python 3 更改为 Python 2.7?

【问题讨论】:

  • 您可以将其他脚本作为子进程运行吗?
  • 您可以使用subprocess 模块执行它。只需指定您想要的解释器以及 2.7 .py 文件名作为参数。你不能通过import来做到这一点。
  • 直接 - 简短的回答是“否”。 import 将模块加载并编译到当前解释器中...如果不能轻松移植另一个模块,则必须找到另一种方法。
  • 听起来您可能只想使用subprocess。您只需要使用正确的解释器(很容易通过提供二进制文件的完整路径)。
  • 虽然subprocess 并在之后获取文件是一个非常通用且可行的解决方案 - 取决于您在其他脚本中执行的操作,这很可能是浪费。例如,如果您正在生成大型 CSV 文件,而不必对其应用复杂的处理/分组,并且您只需要逐行读取它们,那么编写它们以再次读取它们似乎有点浪费。跨度>

标签: python python-2.7 python-3.x python-import


【解决方案1】:

这是一个基本的例子:

import subprocess
import platform

print("Running ", platform.python_version())
old_version = subprocess.check_output("python2 --version", encoding="utf-8")
print("Old version", old_version)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-03
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多