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

Cannot find/open tsne_multicore shared library #32

Open
SumNeuron opened this issue Nov 8, 2017 · 44 comments
Open

Cannot find/open tsne_multicore shared library #32

SumNeuron opened this issue Nov 8, 2017 · 44 comments

Comments

@SumNeuron
Copy link

I installed this.
It works inside the directory.
When I move it too dist-packages, it breaks.
It is on sys.path

@guenteru
Copy link
Contributor

I just tried to replicate this and it works fine for me (python 3.6.2).
Which python version are you running?

@SumNeuron
Copy link
Author

SumNeuron commented Nov 12, 2017 via email

@guenteru
Copy link
Contributor

which command did you use to install?

@SumNeuron
Copy link
Author

git clone https://github.com/DmitryUlyanov/Multicore-TSNE.git
cd Multicore-TSNE/
pip install --no-cache-dir .

@guenteru
Copy link
Contributor

try without --no-cache-dir

@SumNeuron
Copy link
Author

SumNeuron commented Nov 18, 2017 via email

@AndrewCurran
Copy link

I am having the same problem on 3.6.2.

@heurainbow
Copy link

same problem

@overdrivek
Copy link

any updates regarding this? i have the same issue.

@DmitryUlyanov
Copy link
Owner

Please try to install with python setup.py install

@akupemula
Copy link

I solved the problem by compiling the shared .so file manually using g++

@mpenagar
Copy link

I got the same problem with python 3.4 when running the example inside the installation directory "Multicore-TSNE"

Worked if I run python outside the installation directory.

@LukasMosser
Copy link

Python 2.7
Compiled using windows build tools 2017
Installed via pip install. and python setup.py install
Neither work.
Any idea why?

@arianhosseini
Copy link

I had the same problem. This is how I fixed it:

  • go to the parent directory
  • run pip install Multicore-TSNE/
    then the egg is added to /usr/local/lib/python2.7/dist-packages/. Same can be done on python3.x with pip3.

@darthdeus
Copy link

Tried both python setup.py install, running pip install . and running pip install Multicore-TSNE from the parent dir, neither works on Windows 10 with 2017 devtools.

@abrahamnunes
Copy link

I was experiencing this on one of my machines and so I just updated numpy in my Anaconda distribution. That seemed to fix it.

@jroakes
Copy link

jroakes commented Apr 22, 2018

The problem I am having is that the file tsne_multicore.dll has been compiled with i386 architecture (32-bit) so it will not work on 64-bit systems, thus the "error 0xc1". I am not sure if this is the correct answer for everyone, but I was able to add:

    if 0 != execute(['cmake',
		 '-GMinGW Makefiles',  <----------This
                     '-DCMAKE_BUILD_TYPE={}'.format(build_type),
                     '-DCMAKE_VERBOSE_MAKEFILE={}'.format(int(self.verbose)),

to the setup.py file to get it to compile with MinGW for WIndows which works and produces the right files for the architecture.

@haltuf
Copy link

haltuf commented Jun 8, 2018

I have same problem on Win 10, tried to install using all methods mentioned.

@RichardMeyes
Copy link

@jroakes THX! That worked perfectly!

@fingoldo
Copy link

fingoldo commented Jul 13, 2018

@DmitryUlyanov could you kindly take a look, there is still a problem on Windows...
UPD
After server reboot somehow it started working.. )

@adrisede
Copy link

Hi, I also have the same problem on Win 10, and also tried with all the methods mentioned and couldn't make it to work.

@RebekkaWegmann
Copy link

I also have the same issue on Win 10.

@IrisStark
Copy link

Same issue on Win 10. Tried everything above.

@rajbhatti
Copy link

rajbhatti commented Aug 29, 2018

Did anyone find any solution? I am getting the same error

@worm6206
Copy link

If you are on Windows,

  1. Install MinGW 64. I had it already, but you can install from http://mingw-w64.org/doku.php.
  2. Then add MinGW flag as Cannot find/open tsne_multicore shared library #32 (comment) describes.
  3. Next, build with python setup.py install
  4. and install with pip install .

@bscully27
Copy link

I spent an hour trying different installs with cmd, mingw, pip, setup.py. I'm using python 2.7.10 on windows7. Nothing worked.

I then tried on python3.6, worked immediately.

@mosynaq
Copy link

mosynaq commented Nov 4, 2018

I built the lib using MSVS 2017 and it worked. I can share the file. But there is an easier way: use pypi wheel package (pip regular installation process)! It simply works!

@eardic
Copy link

eardic commented Jan 9, 2019

I added '-DCMAKE_GENERATOR_PLATFORM=x64' flag to the setup.py and the problem solved in Win64 (Win10) and Python 3.5.4.

if 0 != execute(['cmake',
'-DCMAKE_GENERATOR_PLATFORM=x64', <----- THIS
'-DCMAKE_BUILD_TYPE={}'.format(build_type),
'-DCMAKE_VERBOSE_MAKEFILE={}'.format(int(self.verbose)),

@ZippoML
Copy link

ZippoML commented Jan 11, 2019

I added '-DCMAKE_GENERATOR_PLATFORM=x64' flag to the setup.py and the problem solved in Win64 (Win10) and Python 3.5.4.

if 0 != execute(['cmake',
'-DCMAKE_GENERATOR_PLATFORM=x64', <----- THIS
'-DCMAKE_BUILD_TYPE={}'.format(build_type),
'-DCMAKE_VERBOSE_MAKEFILE={}'.format(int(self.verbose)),

thx, solved my problem. win 10

@Po-Shin
Copy link

Po-Shin commented Feb 10, 2019

Hi, I used pip install MulticoreTSNE and got the same error while running my code. Anyone got the solution to fix it?

thanks!

@ghayth82
Copy link

I added '-DCMAKE_GENERATOR_PLATFORM=x64' flag to the setup.py and the problem solved in Win64 (Win10) and Python 3.5.4.
if 0 != execute(['cmake',
'-DCMAKE_GENERATOR_PLATFORM=x64', <----- THIS
'-DCMAKE_BUILD_TYPE={}'.format(build_type),
'-DCMAKE_VERBOSE_MAKEFILE={}'.format(int(self.verbose)),

thx, solved my problem. win 10

where I can find the setup.py file, please?

@ghayth82
Copy link

If you are on Windows,

  1. Install MinGW 64. I had it already, but you can install from http://mingw-w64.org/doku.php.
  2. Then add MinGW flag as #32 (comment) describes.
  3. Next, build with python setup.py install
  4. and install with pip install .

hi
can you help me , what do you mean by "build with python setup.py install" then install with pip install .` ?
can you provide me with full commands please

@ZippoML
Copy link

ZippoML commented Feb 19, 2019

If you are on Windows,

  1. Install MinGW 64. I had it already, but you can install from http://mingw-w64.org/doku.php.
  2. Then add MinGW flag as #32 (comment) describes.
  3. Next, build with python setup.py install
  4. and install with pip install .

hi
can you help me , what do you mean by "build with python setup.py install" then install with pip install .` ?
can you provide me with full commands please

I alrdy forgot what i did to solve the problem. But i think the steps are:

  1. download package from here https://github.com/DmitryUlyanov/Multicore-TSNE
  2. open setup.py install with notepad or jupyter
  3. change the code as was written above
  4. install the pakage by command in cmd. python setup.py install

@arikanev
Copy link

Also having this issue on OSX, @akupemula, can you expand on how to compile the .so with g++ manually? Thanks!

@ntr34g
Copy link

ntr34g commented Mar 27, 2019

i've done everything mentioned here #32 (comment)
compiled with cmake x64 and mingw-w64\x86_64-8.1.0-posix-sjlj-rt_v6-rev0

but still getting
"RuntimeError: Cannot find/open tsne_multicore shared library"

@bscully27
Copy link

bscully27 commented Mar 27, 2019 via email

@ntr34g
Copy link

ntr34g commented Mar 31, 2019

I added '-DCMAKE_GENERATOR_PLATFORM=x64' flag to the setup.py and the problem solved in Win64 (Win10) and Python 3.5.4.

if 0 != execute(['cmake',
'-DCMAKE_GENERATOR_PLATFORM=x64', <----- THIS
'-DCMAKE_BUILD_TYPE={}'.format(build_type),
'-DCMAKE_VERBOSE_MAKEFILE={}'.format(int(self.verbose)),

this helped me on win 10 x64 python 3.6.8

@Applenice
Copy link

I added '-DCMAKE_GENERATOR_PLATFORM=x64' flag to the setup.py and the problem solved in Win64 (Win10) and Python 3.5.4.

if 0 != execute(['cmake',
'-DCMAKE_GENERATOR_PLATFORM=x64', <----- THIS
'-DCMAKE_BUILD_TYPE={}'.format(build_type),
'-DCMAKE_VERBOSE_MAKEFILE={}'.format(int(self.verbose)),

Thank you very much, this solved my problem,this helped me on windows 10 x64 python 3.6.5

@mukesh5
Copy link

mukesh5 commented Apr 21, 2019

I added '-DCMAKE_GENERATOR_PLATFORM=x64' flag to the setup.py and the problem solved in Win64 (Win10) and Python 3.5.4.

if 0 != execute(['cmake',
'-DCMAKE_GENERATOR_PLATFORM=x64', <----- THIS
'-DCMAKE_BUILD_TYPE={}'.format(build_type),
'-DCMAKE_VERBOSE_MAKEFILE={}'.format(int(self.verbose)),

Thanx this solved my problem on win10 & python 3.5.4

@jonimatix
Copy link

I added '-DCMAKE_GENERATOR_PLATFORM=x64' flag to the setup.py and the problem solved in Win64 (Win10) and Python 3.5.4.
if 0 != execute(['cmake',
'-DCMAKE_GENERATOR_PLATFORM=x64', <----- THIS
'-DCMAKE_BUILD_TYPE={}'.format(build_type),
'-DCMAKE_VERBOSE_MAKEFILE={}'.format(int(self.verbose)),

Thanx this solved my problem on win10 & python 3.5.4

This works for me as well. If you had already installed the package, just type pip uninstall MulticoreTSNE and then reinstall it..

@michaelthwan
Copy link

The above solution works for me. Let me summarize the solution:

  1. If you installed package before, pip uninstall MulticoreTSNE
  2. Clone the source git clone https://github.com/DmitryUlyanov/Multicore-TSNE.git
  3. Edit /Multicore-TSNE/setup.py,

Find these piece of code and add one line

if 0 != execute(['cmake',
'-DCMAKE_GENERATOR_PLATFORM=x64', <----- THIS
'-DCMAKE_BUILD_TYPE={}'.format(build_type),
'-DCMAKE_VERBOSE_MAKEFILE={}'.format(int(self.verbose)),
  1. install by source
cd /Multicore-TSNE
pip install .

@xDarkLemon
Copy link

Does anyone know hot to fix it on Mac OS?

@zfhxi
Copy link

zfhxi commented Sep 26, 2021

Problem:

demo:

from sklearn.datasets import load_digits
from MulticoreTSNE import MulticoreTSNE as TSNE
from matplotlib import pyplot as plt

digits = load_digits()
embeddings = TSNE(n_jobs=4).fit_transform(digits.data)
vis_x = embeddings[:, 0]
vis_y = embeddings[:, 1]
plt.scatter(vis_x, vis_y, c=digits.target, cmap=plt.cm.get_cmap("jet", 10), marker='.')
plt.colorbar(ticks=range(10))
plt.clim(-0.5, 9.5)
plt.show()

If you run this demo, the error may occurr:

Traceback (most recent call last):
  File "/xxxx/miniconda3/xxx/test_MultiCore_TSNE.py", line 10, in <module>
    embeddings = TSNE(n_jobs=4).fit_transform(digits.data)
  File "/xxxx/miniconda3/xxx/site-packages/MulticoreTSNE/__init__.py", line 103, in __init__
    raise RuntimeError('Cannot find/open tsne_multicore shared library')
RuntimeError: Cannot find/open tsne_multicore shared library

Explore:

Open /xxx//miniconda3/xxx/site-packages/MulticoreTSNE/__init__.py to check what makes it happen,and locate to around line 103:

path = os.path.dirname(os.path.realpath(__file__))
try:
    sofile = (glob(os.path.join(path, "libtsne*.so")) + glob(os.path.join(path, "*tsne*.dll")))[0]
    self.C = self.ffi.dlopen(os.path.join(path, sofile))
except (IndexError, OSError):
    raise RuntimeError('Cannot find/open tsne_multicore shared library')

To get more concrete information about this error, we can modified this source code as follow:

path = os.path.dirname(os.path.realpath(__file__))
try:
    sofile = (glob(os.path.join(path, "libtsne*.so")) + glob(os.path.join(path, "*tsne*.dll")))[0]
    self.C = self.ffi.dlopen(os.path.join(path, sofile))
# except (IndexError, OSError):
# raise RuntimeError('Cannot find/open tsne_multicore shared library')

except IndexError as e:
    print(e)
    exit(-1)

except OSError as e1:
    print(e1)
    exit(-1)

Then run the demo again, errors may occurr as follow:

cannot load library '/xxxx/miniconda3/xxx/site-packages/MulticoreTSNE/libtsne_multicore.so':
 /xxxx/miniconda3/xxx/site-packages/scipy/_lib/_uarray/../../../../../libstdc++.so.6: version `GLIBCXX_3.4.29' not found
 (required by /xxxx/miniconda3/xxx/site-packages/MulticoreTSNE/libtsne_multicore.so)

From this information, we can see that there's no GLIBCXX_3.4.29 in libstdc++.so.6. Test it as follow:

$ real path /xxxxx/miniconda3/xxx/scipy/_lib/_uarray/../../../../../libstdc++.so.6
$ /xxxx/miniconda3/xxx/lib/libstdc++.so.6.0.26
$ strings /xxxx/miniconda3/xxx/lib/libstdc++.so.6.0.26  | grep GLIBCXX_3.4.29
$ # return nothing

Solution

Reference:https://blog.csdn.net/qq_39295044/article/details/86685729

We can find /usr/lib/libstdc++.so.6.0.29 contains GLIBCXX_3.4.29, test it:

$ strings /usr/lib/libstdc++.so.6 | grep GLIBCXX_3.4.29
GLIBCXX_3.4.29
GLIBCXX_3.4.29

This lib file satisfies the requirement, so we can replace /xxxx/miniconda3/xxx/lib/libstdc++.so.6.0.26 with /usr/lib/libstdc++.so.6.0.29:

$ mv /xxxx/miniconda3/xxx/lib/libstdc++.so.6.0.26 /xxxx/miniconda3/xxx/lib/libstdc++.so.6.0.26_bak
$ ln -s /usr/lib/libstdc++.so.6.0.29 /xxxx/miniconda3/xxx/lib/libstdc++.so.6.0.26

Run the demo again, good lucky!

@shayantabatabaee
Copy link

shayantabatabaee commented Jun 28, 2023

I also encountered a similar issue, but I managed to resolve it by following these steps:

  1. First, I downloaded the Mingw64 compiler for Windows from the official website: https://winlibs.com/#download-release.

  2. Once the download was complete, I installed the Mingw64 compiler on my system.

  3. After installing Mingw64, I changed the following code to build the project:

if 0 != execute(['cmake',  
                         '-G', 'MinGW Makefiles',  <----- This Line
                         '-DCMAKE_BUILD_TYPE={}'.format(build_type),
  1. I compiled the project using the Mingw64 compiler, and fortunately, it worked perfectly fine.

By following these steps and utilizing the Mingw64 compiler, I was able to overcome the problem.

MulticoreTSNE-0.1-cp37-cp37m-win_amd64.zip

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

No branches or pull requests