zhengp0 / limetr

Robust linear mixed effects model
BSD 2-Clause "Simplified" License
9 stars 8 forks source link

ImportError: dlopen: cannot load any more object with static TLS #19

Closed aflaxman closed 3 years ago

aflaxman commented 3 years ago

Thanks for making this available! I have found that the import order matters in a surprising way:

If I use

import seaborn
import limetr  # needs to be imported before seaborn to work. weird, huh?

I receive the following error

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-9f4b0b4257cd> in <module>
      1 import seaborn
----> 2 import limetr  # needs to be imported before seaborn to work. weird, huh?

/homes/abie/.conda/envs/limetr_conda/lib/python3.7/site-packages/limetr/__init__.py in <module>
      1 # nonlinear mixed effects model
      2 import numpy as np
----> 3 import ipopt
      4 from copy import deepcopy
      5 from limetr import utils

/homes/abie/.conda/envs/limetr_conda/lib/python3.7/site-packages/ipopt/__init__.py in <module>
     42 from __future__ import absolute_import
     43 
---> 44 from cyipopt import *
     45 from .ipopt_wrapper import minimize_ipopt
     46 from .version import __version__

ImportError: dlopen: cannot load any more object with static TLS

If I reverse the order of these imports, it works. This only happens in my Jupyter notebook. In a python interpreter on the command line, I can use either order.

zhengp0 commented 3 years ago

Thanks @aflaxman ! In the new version of limetr we move to use solver from scipy instead of cyipopt. We do not have control of cyipopt and scipy is more compatible.