Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在执行过程中从64位python.exe切换到32位_Python_Python 3.x_Anaconda - Fatal编程技术网

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

在执行过程中从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

我有两个独立的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位过程中,需要导入一些包,并在最后返回数据

在32位和64位模式之间执行中间很可能是不可能的。要解决,请考虑将您的工作流划分为多个脚本,并在需要时同时拥有32位和64位脚本版本:
  • 使用一个脚本(即通过ODBC连接)检索数据,并 输出到平面文件(txt、csv)
  • 用一个脚本导入平面文件和处理数据,并导出到处理过的平面文件中
  • 使用另一个脚本(即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版本。

    是的,我可能需要将模块导入32位名称空间,只需使用32位可执行文件的完整路径即可。windows上没有其他“魔法”。因此
    subprocess.Popen(path)
    ,那么我如何传递代码?在它自己的模块中,您可以将其作为参数传递。让我明确一点:这实际上是在编写两个程序,在这两个程序之间需要某种协议来进行对话。最简单的方法是读取/写入文件。不,没有办法解决这个问题,在一个进程中运行32位和64位是绝对不可能的。所以-你写了两个部分,然后进行交流。让我把这个弄清楚。。。类似我上面描述的代码是不可能的?我不在乎正在使用什么模块,也不应该在意。。。我所关心的只是解释代码的python.exe版本。我不可能运行一个在执行期间可以在32位和64位之间切换的.py?