2017-09-24 7 views
1

입자 반응에 대해 사용자를 가르치기 위해 입자의 반응을 시뮬레이션하는 프로그램을 파이썬으로 작성하고 있습니다. 파이썬이 필요한 처리를하기에는 너무 느리므로, 속도 향상을 위해 Cython으로 방향을 돌렸고 치료를했습니다. .pyx 파일을 .pyd 파일로 컴파일하고 간단한 import 문 (예 : 'import module')으로 파이썬에서 가져 와서 실행할 수 있습니다.파이썬을 통해 가져 오는 Cython pyd 파일

그러나 프로그램을 결국 다른 사람의 컴퓨터에서 실행해야하며이 컴퓨터에서는 .pyd 파일을 가져올 수 없습니다. 내가하려고하면이 오류 메시지가 :

"ImportError: DLL load failed: The specified module could not be found." 

.pyd 파일은 다른 컴퓨터에 설치된 파이썬 3.3있는 동안 그러나, 내가 파이썬 3.6를 실행하고, 두 컴퓨터에 정확히 같은 위치에 있습니다. 또한 내 컴퓨터에는 Cython이 설치되어 있지만 다른 컴퓨터에는 설치되어 있지 않습니다. 두 기계 모두 32 비트입니다.

다른 컴퓨터에 .exe 파일의 블록이 있으므로 전체 프로그램을 .exe 파일로 간단히 컴파일 할 수 없습니다.

나는 Cython에서 스택의 질문을 통해 trawled하고, Cython 문서를 모두 쓸데없이 연구했다.

누군가 가져 오기가 작동하지 않는 이유와 내가 작동하도록하는 방법을 설명 할 수 있습니까? 정확히 .pyd 파일에 대한 몇 가지 추가 배경과 파이썬이 그것들을 어떻게 부르는 지 또한 좋을 것입니다.

편집 : main.py라는 파일에서 프로그램을 실행합니다. 동일한 디렉토리에서 main이라는 폴더를 가지고 있는데, 모듈에 사용하는 코드를 저장합니다. main.py는 MoveParticles.pyd를 호출하는 ParticleModel.py를 호출하는 PageManager.py를 호출합니다. (이 세 파일은 main 폴더에 저장됩니다.) 내 컴퓨터에서 작동하는 .pyd 파일을 가져 오려면

"import main.MoveParticles" 

을 사용하십시오.

+0

본인의 질문을 편집하여 세부 사항을 제공합니다. 불행히도 업로드 할 이미지를 가져올 수 없습니다. 그렇지 않으면 실제 파일을 보여줬을 것입니다 ... –

+0

setup.py는 어떻게 생겼습니까? Cython.Build 수입 cythonize에서 distutils.core 가져 오기 설정 에서 – ead

+0

#cython 설치 파일 설정 (ext_modules = cythonize (MYFILEPATH.pyx)) 내 .pyx 파일을 컴파일 한 다음에서 결과으로 .pyd 파일을 이동 내 파이썬 폴더 내 주 폴더 (전에 참조) 내 –

답변

0

좋아, 여기서 어려움은 DLL이없는 혼란에서 발생했다.

본질적으로 DLL 인 (Python C extension: Use extension PYD or DLL?) .pyd 파일을 가져 오려고했기 때문에 오류가 있다고 생각했습니다.

그러나 실제 오류의 원인은 내 .pyd 파일을 실행하는 데 필요한 DLL이 부족했기 때문입니다. 파이썬 3.5 버전을 사용하여이 문제를 해결했으며, 파이썬 3.5에서 작동하도록 .pyd 파일을 다시 컴파일 한 후 응용 프로그램에서 치료를했습니다.

요약 : 내 컴퓨터에서 파일을 실행하려고 시도 할 때 필요한 DLL이 부족하여 프로그램이 중단되었습니다.