2013-10-28 24 views
6

Tôi đang gặp sự cố khi đóng băng chương trình của tôi. Tôi thu hẹp nó xuống mô-đun scipy. Các porgramm Tôi cố gắng để đóng băng là:Sử dụng CX_Freeze với Scipy: scipy.special._ufuncs.py

from scipy import signal 
signal.hann(1000) 

thiết lập kịch bản của tôi là:

import sys 
from cx_Freeze import setup, Executable 

build_exe_options = {} 

base = None 
if sys.platform == "win32": 
    base = "Win32GUI" 

setup( name = "Some name", 
     version = "1.0", 
     author="My name", 
     description = "My GUI application!", 
     options = {"build_exe": build_exe_options}, 
     executables = [Executable("Script_Name.py", base=base)]) 
            # ^CHANGE THIS NAME!!! 

Đây là một picture of the error message. Tôi cũng đã thử bao gồm scipy.signal trong tệp thiết lập là

build_exe_options = {"includes":"scipy.signal"} 

nhưng không thực hiện tốt. Làm ơn giúp tôi.

+1

Trong [câu hỏi này] (http://stackoverflow.com/questions/19594567/importerror-when-using-cx-freeze-with-scipy), người hỏi thấy rằng đổi tên thư viện trong thư mục xây dựng đã sửa nó. Bạn có một tập tin gọi là 'scipy.special._ufuncs.pyd' (hoặc' .dll') trong thư mục build? Bạn có thể thử đổi tên nó thành '_ufuncs.pyd' (hay' .dll') không? –

+0

Tôi đã sửa nó bằng cách sao chép libmmd.dll và libifcoremd.dll từ numpy \ core – Kknd

Trả lời

8

Tôi đã có một vấn đề tương tự mà có thể được giải quyết bằng cách đảm bảo rằng:

1 thư mục build chứa một file có tên _ufunc.pyd (thay vì scipy.special._ufuncs.pyd như đã đề cập ở trên). Bạn có thể đạt được điều này bằng cách chỉ định build_exe_options:

build_exe_options = { 'packages': ['scipy'], 
        "include_files": [('path2python\\Lib\\site-packages\\scipy\\special\\_ufuncs.pyd','_ufuncs.pyd')]} 

2 Đảm bảo rằng tất cả các dll được sử dụng bởi ufunc.pyd cũng nằm trong thư mục xây dựng. Trong trường hợp libifcoremd.dll adn libmmd.dll của tôi bị lỗi. Bạn có thể kiểm tra điều này với dependencywalker

Tôi hy vọng điều này sẽ giúp bạn.

Các vấn đề liên quan