2013-03-18 178 views
15

Tôi có Python 2.7 trên Cửa sổ 7 OS. Tôi muốn đóng gói project.py của mình trong một tệp thực thi bằng py2exe. Thực hiện chỉ đạo tôi đã viết một tập tin setup.pyđóng gói phần mềm bằng Python sử dụng py2exe với 'libiomp5md.dll' không tìm thấy

from distutils.core import setup 
import py2exe 

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

và tôi đã nhận thông điệp này

enter image description here

tôi đã cố gắng để loại trừ 'libiomp5md.dll'

from distutils.core import setup 
import py2exe 

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

dll_excludes = ['libiomp5md.dll'] 

nhưng luôn luôn tôi đã nhận được thông báo lỗi tương tự "lỗi: libiomo5md.dll: Không có tập tin hoặc thư mục"

thực thi của tôi chứa:

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

Bạn có thể sao chép đầu ra từ bảng điều khiển cửa sổ bằng cách nhấp vào biểu tượng ở trên cùng bên trái và chuyển đến "Chỉnh sửa-> Đánh dấu" và nhấn "enter" để sao chép – danodonovan

+0

Câu hỏi này được mười tháng tuổi; bạn có thể chấp nhận câu trả lời không? – bdesham

Trả lời

9

libiomp5md.dll là từ trình biên dịch Intel C, và được sử dụng cho hoạt động OpenMP đa xử lý. Tôi hy vọng rằng mã của bạn liên quan đến numpy hoặc mã được biên dịch bằng trình biên dịch Intel và do đó, việc xây dựng py2exe của bạn phụ thuộc vào nó.

Bạn không thể chỉ tạo một bản dựng mà không có nó, vì vậy tôi khuyên bạn nên tìm nó trên hệ thống của bạn và sao chép nó vào thư mục nơi bạn chạy python setup.py py2exe. Gợi ý, tôi có một bản sao trong C:\Python27\Lib\site-packages\numpy\core

[Nếu bạn thực sự muốn loại bỏ nó, bạn sẽ cần phải biên dịch numpy bằng tay với Visual Studio hoặc MSys.]

Một khi bạn đã libiomp5md.dll trong thư mục mà bạn đang thực hiện python setup.py py2exe sau đó bạn chỉ cần loại bỏ các dòng exclude_dll (như bạn không muốn được trừ nó ...)

from distutils.core import setup 
import py2exe 

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

có đúng mã liên quan đến Numpy –

29

tôi đã cùng một vấn đề, nhưng tính năng gọi import numpy trong setup.py giải quyết vấn đề

+1

Hey @ChrisB. Tôi chỉ cần di chuyển các tập tin libiomp5md.dll trong thư mục của setup.py và nó hoạt động –

+0

thêm "nhập khẩu gumpy" làm việc cho tôi quá. Bạn không thực sự muốn di chuyển các DLL xung quanh, vì các thành phần khác có thể phụ thuộc vào chúng ở một nơi nào đó. – Pierre

0

Tôi gặp vấn đề tương tự. Tôi đã phải cài đặt gọn gàng trên một máy tính, đã làm nó với trình biên dịch gcc mingw. Tôi xác nhận: bản sao của dll được tìm thấy trong C: \ Python27 \ Lib \ site-packages \ numpy \ core \

Tôi vừa sao chép nó vào thư mục làm việc trước khi khởi chạy thiết lập.

Không có gì đặc biệt để điều chỉnh trong setup.py, phụ thuộc được tìm thấy tự động.

0

OK, tôi cũng gặp vấn đề tương tự. Nó bật ra rằng một tập tin .pyd trong sklearn đã tham khảo libiomp5md.dll. Py2exe trông hai chỗ cho DLL của bạn - trên biến môi trường đường dẫn và trong cùng thư mục mà tệp .pyd nằm trong. Libiomp5md.dll nằm trong không. Py2exe khá nhiều từ bỏ và thay vì đưa ra một tên đường dẫn đầy đủ như c: \ Python27 \ lib \ site-packages \ numpy \ core \ libiomp5md.dll, nó nói "libiomp5md.dll", sau này, nó không thể tìm thấy.

Tôi thiếu kiên nhẫn. Tôi đã thêm một dòng trong tệp thiết lập của mình:

os.environ ["PATH"] + = os.pathsep + os.path.dirname (numpy.core.tệp)

và đó là nơi libiomp5md.dll là. Bây giờ mọi thứ đều hoạt động. Chỉ cần chắc chắn rằng bạn làm điều này trong mã của bạn trước khi thiết lập gọi điện thoại và nó sẽ cho bạn quá.