davidcaron / pye57

Read and write e57 point clouds from Python
MIT License
70 stars 42 forks source link

pye57 - error importing libe57 #1

Closed mivi2007 closed 2 years ago

mivi2007 commented 6 years ago

Hello.

I tried to install pye57 lib using different python versions ... 3.5, 3.6 and 3.7 also.

I used pip, with no problem at all (succefully installed pye57-0.2.3)

When I try to import the module the error shown is always the same as in the following (including the installation steps)

_D:\Python35>python Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information.

import numpy import pye57 Traceback (most recent call last): File "", line 1, in ImportError: No module named 'pye57' exit()

D:\Python35>cd Scripts

D:\Python35\Scripts>pip install pye57 Collecting pye57 Using cached https://files.pythonhosted.org/packages/8d/9c/7c21d829f5afc50d25f9ea5a51c1c230aad2b2f00e54450a0390eb88dc2e/pye57-0.2.3-cp35-cp35m-win_amd64.whl Requirement already satisfied: pybind11 in d:\python35\lib\site-packages (from pye57) (2.2.3) Requirement already satisfied: numpy in d:\python35\lib\site-packages (from pye57) (1.15.1) Requirement already satisfied: pyquaternion in d:\python35\lib\site-packages (from pye57) (0.9.2) Installing collected packages: pye57 Successfully installed pye57-0.2.3

D:\Python35\Scripts>cd ..

D:\Python35>python.exe Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information.

import numpy import pye57 Traceback (most recent call last): File "", line 1, in File "D:\Python35\lib\site-packages\pye57__init_.py", line 1, in from pye57 import libe57 ImportError: DLL load failed: Impossibile trovare il modulo specificato.

Any suggestion?

Thanks Michele

xuanvinhilb commented 6 years ago

I have the same problem. It seems that pye57 did not compile libe57Format. Therefore, no library to link to. Wait for reply from David.

xuanvinhilb commented 6 years ago

I solved the problem. It is due to the missing of "xerces-c_3_2.dll" or the compiler cannot find the library in your library path. You can check the problem by using "Dependency Walker" to analyze the file "libe57.cp36-win_amd64.pyd". It will tell you which library is missing.

davidcaron commented 6 years ago

@xuanvinhilb Thanks for figuring it out!

The quick fix is to do the same as the CI does: on Windows, install xerces-c with conda and on Linux, install libxerces-c-dev

I'll see if I can build against static libraries, or include the dll somehow...

markummitchell commented 5 years ago

Hello, for anybody adding the dll, I had to copy the dll from the xerces install to the pye57 install using "copy \users\mark\AppData\Local\conda\conda\pkgs\xerces-c-3.2.2-ha925a31_0\Library\bin\xerces-c-3_2.dll \users\mark\AppData\Local\Programs\Python\Python36\Lib\site-packages\pye57", where \users\mark is for me so it should be changed for your account, and Python36 would be changed to Python35 for the older wheel. After this the DLL error went away after 'import pye57'

ebrahim31 commented 4 years ago

Hello, I installed the xerces-c with conda as stated, however, I still get the error as follows:

from pye57 import libe57 ImportError: DLL load failed: The specified module could not be found.

I also have a second question. Can you provide more detail on how to create an E57 file if we have a series of NumPy arrays? I tried 57_write.write_scan_raw(data_raw) to create an E57 file, while I can see the coordinates in data_raw when I import the file into CloudCompare, all data are shown as zeros. Thank you.

davidcaron commented 2 years ago

Hi, sorry for the delay, please try to install the newest version on pypi. They bundle a dll of xerces-c, so hopefully a simple pip install -U pye57 will fix the issue.

I also have a second question. Can you provide more detail on how to create an E57 file if we have a series of NumPy arrays? I tried 57_write.write_scan_raw(data_raw) to create an E57 file, while I can see the coordinates in data_raw when I import the file into CloudCompare, all data are shown as zeros. Thank you.

Could you create a new issue in which you provide a small code sample showing how you're creating your file? I wish I had more time to write documentation, but you can maybe get some inspiration in the tests...