Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pandas packing on Windows missing necessary .dlls #1969

Closed
bjones1 opened this issue May 2, 2016 · 5 comments
Closed

Pandas packing on Windows missing necessary .dlls #1969

bjones1 opened this issue May 2, 2016 · 5 comments

Comments

@bjones1
Copy link
Contributor

bjones1 commented May 2, 2016

This is a followup on #1580. On my Windows PC (see below), I see failures in tests/functional/test_libraries.py::test_pandas_extension[onedir] (and possibly onefile -- I'm solving one failure at a time). Investigating, running test test reports Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll. Copying from site-packages\numpy\core\*.dll to the dist\ directory fixes this. (Just copying the requested .dll by itself doesn't.)

I'm assuming that PyInstaller can't analyze DLL dependencies -- @matysek, can you confirm or deny? Based on this, I can write a Windows-specific hook. Does anyone see this failure on other platforms (meaning hooks for other OSes)?

Version info:

__main__.py                 80 INFO     PyInstaller: 3.2.dev0+g5e80840.mod
__main__.py                 81 INFO     Python: 3.4.4
__main__.py                 82 INFO     Platform: Windows-10-10.0.10240
@bjones1
Copy link
Contributor Author

bjones1 commented May 2, 2016

Just looking at the log answers my question: yes, PyInstaller does walk DLL dependencies. For example:

bindepend.py               211 DEBUG    Analyzing c:\users\bjones\downloads\winpython-32bit-3.4.4.1qt5\python-3.4.4\lib\site-packages\numpy\core\mkl_rt.dll
bindepend.py               514 DEBUG    Skipping KERNEL32.dll dependency of mkl_rt.dll
bindepend.py               211 DEBUG    Analyzing c:\users\bjones\downloads\winpython-32bit-3.4.4.1qt5\python-3.4.4\Lib\site-packages\numpy\core\libmmd.dll
bindepend.py               514 DEBUG    Skipping KERNEL32.dll dependency of libmmd.dll

I'm not sure yet why it doesn't find all the dependencies. Still looking. depend.bindepend.getfullnameof at least generates the correct path on my PC.

@bjones1
Copy link
Contributor Author

bjones1 commented May 2, 2016

It looks like mkl_rt.dll, libmmd.dll, and libifcoremd.dll are found, but nothing else. Can someone recommend a good dependency walker tool? Neither dependency walker nor PE Explorer seemed to be able to find the additional dependencies. Or perhaps this needs to be added to a hook?

@codewarrior0
Copy link
Contributor

Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll

I'm certain this means that the DLL in question is being loaded at runtime via LoadLibrary because the error message is unique to MKL. If it were loaded at load time, you would see a Python ImportError with "The specified DLL could not be found".

We can't scan for DLL loads done via LoadLibrary, so the only way out is a hook.

@bjones1
Copy link
Contributor Author

bjones1 commented May 2, 2016

Good point -- thanks. I'll look at some hooking.

@bjones1
Copy link
Contributor Author

bjones1 commented May 27, 2016

Closed by 08020fd.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants