2012-12-22 94 views
3

我想在Windows 7 64位上使用Mpi4py 1.3與python 2.7。我下載了包含OpenMPI 1.6.3的here的可安裝版本,因此在已安裝的目錄(*/Python27 \ Lib \ site-packages \ mpi4py \ lib)中存在以下庫:libmpi.lib,libmpi_cxx.lib,libopen-pal.lib和libopen-rte.lib。現在,在我的代碼試圖導入時:在mpi4py中加載MPI DLL時出錯

from mpi4py import MPI 

它返回以下錯誤: 導入錯誤:DLL加載失敗:指定的模塊找不到。我試圖將一個bove lib文件複製到*/Python27 \ Lib \ site-packages \ mpi4py \ MPI.pyd甚至到Windows/System32,但它不起作用。我很感激您對DLL缺少的幫助,以及如何解決錯誤?

感謝,

@ Aso.agile

+0

*的.lib是靜態庫文件或導入庫。這些絕對不是__ DLL。 –

+0

感謝@HristoIliev您的評論。您正確* .lib是靜態庫,在這種情況下,OpenMPI以形式提供。那麼缺少什麼DLL? –

+0

對不起,從不使用mpi4py,免得在Windows上使用。檢查安裝目錄。可能會有一點點不匹配(最近在Open MPI郵件列表中討論了一些Windows安裝問題......) –

回答

2

使用sys.prefix\lib\site-packages\mpi4py\bin\python-mpi.exe或下面的代碼添加到sys.prefix\lib\site-packages\mpi4py\__init__.py周圍線37:

def _init_openmpi(): 
    """Pre-load libmpi.dll and register OpenMPI distribution.""" 
    import os 
    import ctypes 
    if os.name != 'nt' or 'OPENMPI_HOME' in os.environ: 
     return 
    try: 
     openmpi_home = os.path.abspath(os.path.dirname(__file__)) 
     openmpi_bin = os.path.join(openmpi_home, 'bin') 
     os.environ['OPENMPI_HOME'] = openmpi_home 
     os.environ['PATH'] = ';'.join((openmpi_bin, os.environ['PATH'])) 
     ctypes.cdll.LoadLibrary(os.path.join(openmpi_bin, 'libmpi.dll')) 
    except Exception: 
     pass 

_init_openmpi()