繁体   English   中英

在执行中从64位python.exe切换到32位

[英]Switching from 64bit python.exe to 32bit in mid execution

我有2个单独的python.exe,一个是64位,一个是32位。 默认为64位。 在中间执行期间,如何使用subprocess进程或sys (或任何相关程序包)将控制从64位切换到32位,仅对32位执行代码,然后再将控制切换回64位版本? 换句话说,我正在寻找类似...

if struct.calcsize("P")==8: # check if 64 bit version
   # switch to 32 bit version 
   # ??? new_shell = subprocess.Popen(location of 32 bit python.exe)??? what would go here
   # pass a bunch of commands and then switch control back
   # to the 64 bit version

另外,我正在使用anaconda,所以我想第一个调用将是切换到32bit python.exe环境? 在32位过程中,需要导入某些软件包,最后将返回数据。

在32位和64位模式之间进行中间执行几乎是不可能的。 要解决此问题,请考虑将工作流划分为多个脚本,并在需要时同时具有32位和64位版本的脚本:

  1. 使用一个脚本(即通过ODBC连接)检索数据并输出到平面文件(txt,csv)中;
  2. 使用一个脚本导入平面文件并处理数据,然后导出到已处理的平面文件中;
  3. 用另一个脚本返回已处理的数据(即,SQL附加到ODBC数据库中)。

另外,由于Python的两个位版本都无法彼此“交谈”,因此您将需要运行两个单独的脚本,这些脚本根据操作系统类型(32位和64位)有条件地被调用。 并且参数可以通过子流程传递:

#!/usr/bin/python
import struct, subprocess

if struct.calcsize("P") * 8 == 32:
    subprocess.call(['C:\pathTo\32bit\python.exe', 'C:\pathTo\32bit\python\32bitscript.py', 'arg1', 'arg2'])
else:
    subprocess.call(['C:\pathTo\64bit\python.exe', 'C:\pathTo\64bit\python\64bitscript.py', 'arg1', 'arg2'])

环境路径变量或默认命令行路径将无用,因为它会还原到一个python版本,而不会显式地返回另一个版本。 因此,需要绝对声明python.exe版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM