2013-03-18 33 views
15

我在Window 7操作系統上安裝了Python 2.7。我希望使用py2exe將我的project.py包裝在一個可執行文件中。遵照指示我寫了一個setup.py文件使用py2exe打包Python'libiomp5md.dll'的軟件

from distutils.core import setup 
import py2exe 

setup(console=["project.py"]) 

,我得到這個消息

enter image description here

我試圖排除 'libiomp5md.dll'

from distutils.core import setup 
import py2exe 

setup(console=["SegmentationAccuracy.py"]) 

dll_excludes = ['libiomp5md.dll'] 

但總是我得到了相同的錯誤信息「錯誤:libiomo5md.dll:沒有這樣的文件或目錄」

我的可執行文件包含:

import math 
import os 
import numpy as np 
import sys 
import ogr 
from progressbar import ProgressBar 
from shapely.geometry import Polygon 
nan = np.nan 
+0

您可以通過點擊左上角的圖標,然後點擊「編輯 - >標記」,然後點擊「enter」複製 – danodonovan 2013-03-18 15:46:27

+0

這個問題是十個月大;你能接受答案嗎? – bdesham 2014-01-29 18:41:03

回答

9

libiomp5md.dll是從英特爾的C編譯器,以及用於OpenMP多操作。我期望您的代碼涉及numpy或使用英特爾編譯器編譯的代碼,因此您的py2exe版本取決於它。

你不能簡單地創建一個沒有它的版本,所以我會建議在你的系統上找到它並將它複製到你運行python setup.py py2exe的目錄。提示,我在C:\Python27\Lib\site-packages\numpy\core

副本[如果你真的想將它排除在外,你將不得不使用Visual Studio或MSYS手動編譯numpy]

一旦你在目錄中有libiomp5md.dll,你執行python setup.py py2exe那麼你只需要刪除exclude_dll線(因爲你不想被排除它...)

from distutils.core import setup 
import py2exe 

setup(console=["SegmentationAccuracy.py"]) 
+0

是的這是真的代碼涉及Numpy – 2013-03-18 16:17:58

29

我有同樣的問題,但調用內setup.pyimport numpy解決了這個問題

+1

嘿@ChrisB。我只是移動setup.py文件夾中的libiomp5md.dll文件,它的工作原理 – 2013-04-09 16:47:49

+0

添加「import numpy」也適用於我。你不是真的想要移動DLL,因爲其他組件可能取決於他們在某個地方。 – Pierre 2014-03-18 21:09:12

0

我有同樣的問題。 我不得不在機器上安裝numpy,並使用mingw gcc編譯器。 我確認:在C:\ Python27 \ Lib \ site-packages \ numpy \ core \中發現的dll副本\

我剛剛在啓動安裝程序之前將它複製到工作目錄。

沒有什麼特別的東西可以在setup.py中調整,依賴關係會自動找到。

0

好的,我有同樣的問題。原來,sklearn中的.pyd文件引用了libiomp5md.dll。 Py2exe在你的DLL的兩個地方查找 - 在路徑環境變量和.pyd文件所在的同一目錄中。libiomp5md.dll不在。 Py2exe幾乎放棄了,而不是給出一個完整的路徑名稱,如c:\ Python27 \ lib \ site-packages \ numpy \ core \ libiomp5md.dll,它說「libiomp5md.dll」,後來它不能找。

我很不耐煩。 我在我的設置文件中添加了一行:

os.environ [「PATH」] + = os.pathsep + os.path.dirname(numpy.core。文件

這就是libiomp5md.dll所在的位置。現在一切正常。只需確保在調用安裝程序之前在代碼中執行此操作,它也適用於您。