更改Python解释器中间脚本

问题描述:

我有3个.py文件,我在Windows计算机上运行的项目。其中一个文件调用仅32位的库。其他2个.py文件具有32位和64位兼容的库。他们是这样的:更改Python解释器中间脚本

fileA.py 
     -- calls fileB.py (library is only 32 bit compatible) 
     -- also calls function in fileC.py (libraries are both 32 and 64 bit compatible) 

现在,我遇到了在fileC.py一个内存错误可以得到照顾,如果我可以使用Python的64位版本。但是,如果我这样做,执行fileB.py时会遇到错误,因为它有一个32位库,与64位python(32位库是ArcPy)没有很好的交流。有内存错误的库是熊猫,内存错误发生,因为对于32位系统,熊猫无法读取大于2GB的数据帧。

有什么办法可以使用32位解释器fileB.py和64位fileC.py。请记住,两者都是从fileA.py中调用的。

+4

为什么你不想使用64位ArcPy? –

+0

我很想!但我的安装只有32位arcpy。有没有可以获得64位版本的地方? – user308827

+0

您可以使用子进程调用脚本,指定要使用哪个解释器 –

有没有办法在同一个进程混合和64位代码,据我所知。

您需要编写一个围绕ArcPy(fileB)的可执行文件,并使用32位解释器使用subprocess作为单独的进程执行它。可执行ArcPy包装器将需要以序列化格式(如JSON)返回其处理结果。

另一种选择是multiprocessing。您可以使用set_executable()函数来使用32位解释器。此方法提供更好的IPC机制来与子进程进行通信。

在这两种情况下,您最终都会分叉子进程。如果需要多次调用ArcPy,则可能需要将包装器写入长时间运行的子进程并使用多处理。

也就是说,请自己帮忙,并安装ArcPy的64位版本 - 如果可行的话。即使无法删除32位版本,也可以将64位版本安装在其他位置。