在其他版本的Python中调用函数
可以从其他.py文件调用函数。但是我们能强迫Python使用另一个版本吗 问题: 我的Python版本是3.4 我需要连接到Oracle 10g数据库。不幸的是,目前还没有能够连接Python 3.4和10g的cx_Oracle版本(有一个版本,但仅适用于Oracle 11g及以上版本)。因此,我必须使用Python2.7,这样才能使用支持10g的cx_Oracle版本。在这个配置中,我在3.4上运行的代码需要进行各种修改,需要数千行代码 解决方案:在其他版本的Python中调用函数,python,python-2.7,cx-oracle,python-3.4,Python,Python 2.7,Cx Oracle,Python 3.4,可以从其他.py文件调用函数。但是我们能强迫Python使用另一个版本吗 问题: 我的Python版本是3.4 我需要连接到Oracle 10g数据库。不幸的是,目前还没有能够连接Python 3.4和10g的cx_Oracle版本(有一个版本,但仅适用于Oracle 11g及以上版本)。因此,我必须使用Python2.7,这样才能使用支持10g的cx_Oracle版本。在这个配置中,我在3.4上运行的代码需要进行各种修改,需要数千行代码 解决方案: 我当前的所有代码仍将在3.4上运行 当我需要
如何在3.4中运行Python 2.7?一个选项是使用
子流程
模块
def callpython2(file_to_be_executed, params):
cmd = file_to_be_executed + ' ' + ' '.join(params)
cmd = %PYTHON2_EXE% + ' ' + cmd
p = subprocess.Popen(cmd, env=cmdEnv, shell=True)
p.communicate()
然后使用文件和参数(如果有)调用此函数。将调用文件的\uuuuuu main\uuuu
函数,您可以将函数放在\uuuuuuu main\uuu
中
注意:有关如何捕获/控制结果输出或错误的详细信息,请查看子流程。您使用的是什么操作系统?如果是Windows,您能切换到ODBC吗?它是Windows。不幸的是,我无法改变它。如果我愿意的话,我认为最简单的是升级到Ora11g,它有cx_Oracle for 3.4的版本。您不能让两个版本的python在同一个应用程序上运行。您可以将应用降级为在2.7上运行,也可以编写一个在Python2.7上运行的服务,该服务包装您的db连接并通过rpc协议公开方法。但我认为这是一个非常糟糕的主意。您可以看看子流程:。从cx_Oracle切换到pyODBC()比升级Oracle容易得多!我在一条类似的船上,每次我尝试这个(或某个变体),当辅助脚本(3.3)尝试从主脚本(3.4)的目录加载模块时,我都会收到一个错误。我已经给出了python可执行文件的完整路径,但这还不够。我猜这是可以用“env”参数处理的,但我不知道应该设置哪些环境变量,也不知道如何获得正确的值。有什么想法吗?谢谢。我想我在这里找到了答案: