在执行过程中从64位python.exe切换到32位
我有两个独立的python.exe,一个是64位的,一个是32位的。64位是默认值。如何使用在执行过程中从64位python.exe切换到32位,python,python-3.x,anaconda,Python,Python 3.x,Anaconda,我有两个独立的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(l
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位过程中,需要导入一些包,并在最后返回数据 在32位和64位模式之间执行中间很可能是不可能的。要解决,请考虑将您的工作流划分为多个脚本,并在需要时同时拥有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版本。是的,我可能需要将模块导入32位名称空间,只需使用32位可执行文件的完整路径即可。windows上没有其他“魔法”。因此
subprocess.Popen(path)
,那么我如何传递代码?在它自己的模块中,您可以将其作为参数传递。让我明确一点:这实际上是在编写两个程序,在这两个程序之间需要某种协议来进行对话。最简单的方法是读取/写入文件。不,没有办法解决这个问题,在一个进程中运行32位和64位是绝对不可能的。所以-你写了两个部分,然后进行交流。让我把这个弄清楚。。。类似我上面描述的代码是不可能的?我不在乎正在使用什么模块,也不应该在意。。。我所关心的只是解释代码的python.exe版本。我不可能运行一个在执行期间可以在32位和64位之间切换的.py?