我有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,所以我想第一次调用将是切换到32位python.exe环境?在32位进程中,需要导入一些包,最后返回数据。
答案 0 :(得分:1)
32位和64位模式之间的中间执行通常是不可能的。要解决此问题,请考虑将工作流划分为多个脚本,并在需要时同时使用32位和64位版本的脚本:
此外,因为Python的两个版本都不能#34;谈话"对于彼此,您将需要运行双重,单独的脚本,这些脚本根据操作系统类型(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版本。