簡體   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