更改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中调用的。
答
有没有办法在同一个进程混合和64位代码,据我所知。
您需要编写一个围绕ArcPy
(fileB)的可执行文件,并使用32位解释器使用subprocess作为单独的进程执行它。可执行ArcPy包装器将需要以序列化格式(如JSON)返回其处理结果。
另一种选择是multiprocessing。您可以使用set_executable()
函数来使用32位解释器。此方法提供更好的IPC机制来与子进程进行通信。
在这两种情况下,您最终都会分叉子进程。如果需要多次调用ArcPy,则可能需要将包装器写入长时间运行的子进程并使用多处理。
也就是说,请自己帮忙,并安装ArcPy的64位版本 - 如果可行的话。即使无法删除32位版本,也可以将64位版本安装在其他位置。
为什么你不想使用64位ArcPy? –
我很想!但我的安装只有32位arcpy。有没有可以获得64位版本的地方? – user308827
您可以使用子进程调用脚本,指定要使用哪个解释器 –