ContinuumIO / anaconda-issues

Anaconda issue tracking
646 stars 220 forks source link

Anaconda2-2018.12-Linux-x86_64.sh has broken ctypes.util.findlibrary() #10591

Open ChrisMoth opened 5 years ago

ChrisMoth commented 5 years ago

The ctypes.util.find_library function seems broken in the Dec 2018 Anaconda2 release.

As workaround, I have copied ..../anaconda2/lib/python2.7/ctypes/util.py from the working prior Anaconda library into the new Anaconda.

Actual Behavior

With Anaconda2-2018.12-Linux-x86_64, this short demo.py code (required by weasyprint module) should locate and return a filename for the cairo library.

fails. When you run the demo below you will see a directory returned, NOT a fllename.

/tmp$ cat demo.py import ctypes.util print ctypes.util.find_library('cairo') print ctypes.util.find_library('cairo-2') print ctypes.util.find_library('libcairo-2') import cairocffi as cairo

/tmp$ python demo.py

/dors/capra_lab/users/mothcw/psbadmin/anaconda2/lib/cairo << NO should be a (path/)filename None << OK None << OK Traceback (most recent call last): << This is the crash on the import, that you get with weasyprint File "x.py", line 6, in import cairocffi as cairo File "/dors/capra_lab/users/mothcw/psbadmin/anaconda2/lib/python2.7/site-packages/cairocffi/init.py", line 41, in cairo = dlopen(ffi, 'cairo', 'cairo-2', 'cairo-gobject-2') File "/dors/capra_lab/users/mothcw/psbadmin/anaconda2/lib/python2.7/site-packages/cairocffi/init.py", line 38, in dlopen raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names)) OSError: dlopen() failed to load a library: cairo / cairo-2 / cairo-gobject-2

Expected Behavior

Anaconda2-5.2.0-Linux-x86_64.sh gave the correct behavior: The correct output observed with Anaconda2-5.2.0-Linux-x86_64.sh is:

/tmp$ cat demo.py import ctypes.util print ctypes.util.find_library('cairo') print ctypes.util.find_library('cairo-2') print ctypes.util.find_library('libcairo-2') import cairocffi as cairo

/tmp$ python demo.py libcairo.so.2 << GREAT None << OK None << OK And no exception at end. Successful import of cairocffi as cairo

The behavior of the prior Anaconda release. The documentation for ctypes.util.find_library is clear that the return value should be a pathname, NOT a directory only.

https://docs.python.org/3/library/ctypes.html#module-ctypes

Steps to Reproduce

See above

Anaconda or Miniconda version:

Anaconda2-2018.12-Linux-x86_64

Operating System:

Centos 7

conda info
     active environment : base
    active env location : /dors/capra_lab/users/mothcw/psbadmin/anaconda2
            shell level : 2
       user config file : /home/mothcw/.condarc
 populated config files : 
          conda version : 4.5.12
    conda-build version : 3.17.6
         python version : 2.7.15.final.0
       base environment : /dors/capra_lab/users/mothcw/psbadmin/anaconda2  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/linux-64
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/pro/linux-64
                          https://repo.anaconda.com/pkgs/pro/noarch
          package cache : /dors/capra_lab/users/mothcw/psbadmin/anaconda2/pkgs
                          /home/mothcw/.conda/pkgs
       envs directories : /dors/capra_lab/users/mothcw/psbadmin/anaconda2/envs
                          /home/mothcw/.conda/envs
               platform : linux-64
             user-agent : conda/4.5.12 requests/2.21.0 CPython/2.7.15 Linux/3.10.0-862.11.6.el7.x86_64 centos/7 glibc/2.17
                UID:GID : 20003:10015
             netrc file : None
           offline mode : False
conda list --show-channel-urls
# packages in environment at /dors/capra_lab/users/mothcw/psbadmin/anaconda2:
#
# Name                    Version                   Build  Channel
_ipyw_jlab_nb_ext_conf    0.1.0                    py27_0    defaults
alabaster                 0.7.12                   py27_0    defaults
anaconda                  2018.12                  py27_0    defaults
anaconda-client           1.7.2                    py27_0    defaults
anaconda-navigator        1.9.6                    py27_0    defaults
anaconda-project          0.8.2                    py27_0    defaults
argparse                  1.4.0                     <pip>
asn1crypto                0.24.0                   py27_0    defaults
astroid                   1.6.5                    py27_0    defaults
astropy                   2.0.9            py27hdd07704_0    defaults
atomicwrites              1.2.1                    py27_0    defaults
attrs                     18.2.0           py27h28b3542_0    defaults
babel                     2.6.0                    py27_0    defaults
backports                 1.0                      py27_1    defaults
backports.functools_lru_cache 1.5                      py27_1    defaults
backports.os              0.1.1                    py27_0    defaults
backports.shutil_get_terminal_size 1.0.0                    py27_2    defaults
backports_abc             0.5              py27h7b3c97b_0    defaults
beautifulsoup4            4.6.3                    py27_0    defaults
biopython                 1.73                      <pip>
bitarray                  0.8.3            py27h14c3975_0    defaults
bkcharts                  0.2              py27h241ae91_0    defaults
blas                      1.0                         mkl    defaults
blaze                     0.11.3                   py27_0    defaults
bleach                    3.0.2                    py27_0    defaults
blosc                     1.14.4               hdbcaa40_0    defaults
bokeh                     1.0.2                    py27_0    defaults
boto                      2.49.0                   py27_0    defaults
bottleneck                1.2.1            py27h035aef0_1    defaults
bzip2                     1.0.6                h14c3975_5    defaults
ca-certificates           2018.03.07                    0    defaults
cairo                     1.14.12              h8948797_3    defaults
cairocffi                 0.9.0                     <pip>
CairoSVG                  1.0.22                    <pip>
cdecimal                  2.3              py27h14c3975_3    defaults
certifi                   2018.11.29               py27_0    defaults
cffi                      1.11.5           py27he75722e_1    defaults
chardet                   3.0.4                    py27_1    defaults
click                     7.0                      py27_0    defaults
cloudpickle               0.6.1                    py27_0    defaults
clyent                    1.2.2                    py27_1    defaults
colorama                  0.4.1                    py27_0    defaults
conda                     4.5.12                   py27_0    defaults
conda-build               3.17.6                   py27_0    defaults
conda-env                 2.6.0                         1    defaults
conda-verify              3.1.1                    py27_0    defaults
configparser              3.5.0            py27h5117587_0    defaults
contextlib2               0.5.5            py27hbf4c468_0    defaults
cryptography              2.4.2            py27h1ba5d50_0    defaults
cssselect2                0.2.1                     <pip>
curl                      7.63.0            hbc83047_1000    defaults
cycler                    0.10.0           py27hc7354d3_0    defaults
cython                    0.29.2           py27he6710b0_0    defaults
cytoolz                   0.9.0.1          py27h14c3975_1    defaults
dask                      1.0.0                    py27_0    defaults
dask-core                 1.0.0                    py27_0    defaults
datashape                 0.5.4                    py27_1    defaults
dbus                      1.13.2               h714fa37_1    defaults
decorator                 4.3.0                    py27_0    defaults
defusedxml                0.5.0                    py27_1    defaults
distributed               1.25.1                   py27_0    defaults
docutils                  0.14             py27hae222c1_0    defaults
entrypoints               0.2.3                    py27_2    defaults
enum34                    1.1.6                    py27_1    defaults
et_xmlfile                1.0.1            py27h75840f5_0    defaults
expat                     2.2.6                he6710b0_0    defaults
fastcache                 1.0.2            py27h14c3975_2    defaults
filelock                  3.0.10                   py27_0    defaults
flask                     1.0.2                    py27_1    defaults
flask-cors                3.0.7                    py27_0    defaults
fontconfig                2.13.0               h9420a91_0    defaults
freetype                  2.9.1                h8a8886c_1    defaults
fribidi                   1.0.5                h7b6447c_0    defaults
funcsigs                  1.0.2            py27h83f16ab_0    defaults
functools32               3.2.3.2                  py27_1    defaults
future                    0.17.1                   py27_0    defaults
futures                   3.2.0                    py27_0    defaults
fuzzywuzzy                0.17.0                    <pip>
get_terminal_size         1.0.0                haa9412d_0    defaults
gevent                    1.3.7            py27h7b6447c_1    defaults
glib                      2.56.2               hd408876_0    defaults
glob2                     0.6                      py27_1    defaults
gmp                       6.1.2                h6c8ec71_1    defaults
gmpy2                     2.0.8            py27h10f8cd9_2    defaults
graphite2                 1.3.12               h23475e2_2    defaults
greenlet                  0.4.15           py27h7b6447c_0    defaults
grin                      1.2.1                    py27_4    defaults
gst-plugins-base          1.14.0               hbbd80ab_1    defaults
gstreamer                 1.14.0               hb453b48_1    defaults
h5py                      2.8.0            py27h989c5e5_3    defaults
harfbuzz                  1.8.8                hffaf4a1_0    defaults
hdf5                      1.10.2               hba1933b_1    defaults
heapdict                  1.0.0                    py27_2    defaults
html5lib                  1.0.1                    py27_0    defaults
icu                       58.2                 h9c2bf20_1    defaults
idna                      2.8                      py27_0    defaults
imageio                   2.4.1                    py27_0    defaults
imagesize                 1.1.0                    py27_0    defaults
importlib_metadata        0.6                      py27_0    defaults
intel-openmp              2019.1                      144    defaults
ipaddress                 1.0.22                   py27_0    defaults
ipykernel                 4.10.0                   py27_0    defaults
ipython                   5.8.0                    py27_0    defaults
ipython_genutils          0.2.0            py27h89fb69b_0    defaults
ipywidgets                7.4.2                    py27_0    defaults
isort                     4.3.4                    py27_0    defaults
itsdangerous              1.1.0                    py27_0    defaults
jbig                      2.1                  hdba287a_0    defaults
jdcal                     1.4                      py27_0    defaults
jedi                      0.13.2                   py27_0    defaults
jinja2                    2.10                     py27_0    defaults
jpeg                      9b                   h024ee3a_2    defaults
jsonschema                2.6.0            py27h7ed5aa4_0    defaults
jupyter                   1.0.0                    py27_7    defaults
jupyter_client            5.2.4                    py27_0    defaults
jupyter_console           5.2.0                    py27_1    defaults
jupyter_core              4.4.0                    py27_0    defaults
jupyterlab                0.33.11                  py27_0    defaults
jupyterlab_launcher       0.11.2           py27h28b3542_0    defaults
kiwisolver                1.0.1            py27hf484d3e_0    defaults
krb5                      1.16.1               h173b8e3_7    defaults
lazy-object-proxy         1.3.1            py27h14c3975_2    defaults
libarchive                3.3.3                h5d8350f_5    defaults
libcurl                   7.63.0            h20c2e04_1000    defaults
libedit                   3.1.20170329         h6b74fdf_2    defaults
libffi                    3.2.1                hd88cf55_4    defaults
libgcc-ng                 8.2.0                hdf63c60_1    defaults
libgfortran-ng            7.3.0                hdf63c60_0    defaults
liblief                   0.9.0                h7725739_1    defaults
libpng                    1.6.35               hbc83047_0    defaults
libsodium                 1.0.16               h1bed415_0    defaults
libssh2                   1.8.0                h1ba5d50_4    defaults
libstdcxx-ng              8.2.0                hdf63c60_1    defaults
libtiff                   4.0.9                he85c1e1_2    defaults
libtool                   2.4.6                h7b6447c_5    defaults
libuuid                   1.0.3                h1bed415_2    defaults
libxcb                    1.13                 h1bed415_1    defaults
libxml2                   2.9.8                h26e45fe_1    defaults
libxslt                   1.1.32               h1312cb7_0    defaults
linecache2                1.0.0                    py27_0    defaults
llvmlite                  0.26.0           py27hd408876_0    defaults
locket                    0.2.0            py27h73929a2_1    defaults
lxml                      4.2.5            py27hefd8a0e_0    defaults
lz4-c                     1.8.1.2              h14c3975_0    defaults
lzo                       2.10                 h49e0be7_2    defaults
markupsafe                1.1.0            py27h7b6447c_0    defaults
matplotlib                2.2.3            py27hb69df0a_0    defaults
mccabe                    0.6.1                    py27_1    defaults
mistune                   0.8.4            py27h7b6447c_0    defaults
mkl                       2019.1                      144    defaults
mkl-service               1.1.2            py27he904b0f_5    defaults
mkl_fft                   1.0.6            py27hd81dba3_0    defaults
mkl_random                1.0.2            py27hd81dba3_0    defaults
more-itertools            4.3.0                    py27_0    defaults
mpc                       1.1.0                h10f8cd9_1    defaults
mpfr                      4.0.1                hdf1c602_3    defaults
mpmath                    1.1.0                    py27_0    defaults
msgpack-python            0.5.6            py27h6bb024c_1    defaults
multipledispatch          0.6.0                    py27_0    defaults
MySQL-python              1.2.5                     <pip>
mysqlclient               1.4.1                     <pip>
navigator-updater         0.2.1                    py27_0    defaults
nbconvert                 5.4.0                    py27_1    defaults
nbformat                  4.4.0            py27hed7f2b2_0    defaults
ncurses                   6.1                  he6710b0_1    defaults
networkx                  2.2                      py27_1    defaults
networkx                  1.9                       <pip>
nltk                      3.4                      py27_1    defaults
nose                      1.3.7                    py27_2    defaults
notebook                  5.7.4                    py27_0    defaults
numba                     0.41.0           py27h962f231_0    defaults
numexpr                   2.6.8            py27h9e4a6bb_0    defaults
numpy                     1.15.4           py27h7e9f1db_0    defaults
numpy-base                1.15.4           py27hde5b4d6_0    defaults
numpydoc                  0.8.0                    py27_0    defaults
odo                       0.5.1            py27h9170de3_0    defaults
olefile                   0.46                     py27_0    defaults
openpyxl                  2.5.12                   py27_0    defaults
openssl                   1.1.1a               h7b6447c_0    defaults
packaging                 18.0                     py27_0    defaults
pandas                    0.23.4           py27h04863e7_0    defaults
pandoc                    1.19.2.1             hea2e7c5_1    defaults
pandocfilters             1.4.2                    py27_1    defaults
pango                     1.42.4               h049681c_0    defaults
parso                     0.3.1                    py27_0    defaults
partd                     0.3.9                    py27_0    defaults
patchelf                  0.9                  he6710b0_3    defaults
path.py                   11.5.0                   py27_0    defaults
pathlib2                  2.3.3                    py27_0    defaults
patsy                     0.5.1                    py27_0    defaults
pcre                      8.42                 h439df22_0    defaults
pdfrw                     0.4                       <pip>
pep8                      1.7.1                    py27_0    defaults
pexpect                   4.6.0                    py27_0    defaults
pickleshare               0.7.5                    py27_0    defaults
pillow                    5.3.0            py27h34e0f95_0    defaults
pip                       19.0.1                    <pip>
pip                       18.1                     py27_0    defaults
pixman                    0.34.0               hceecf20_3    defaults
pkginfo                   1.4.2                    py27_1    defaults
pluggy                    0.8.0                    py27_0    defaults
ply                       3.11                     py27_0    defaults
prometheus_client         0.5.0                    py27_0    defaults
prompt_toolkit            1.0.15           py27h1b593e1_0    defaults
psutil                    5.4.8            py27h7b6447c_0    defaults
ptyprocess                0.6.0                    py27_0    defaults
py                        1.7.0                    py27_0    defaults
py-lief                   0.9.0            py27h7725739_1    defaults
pycairo                   1.18.0           py27h2a1e443_0    defaults
pycodestyle               2.4.0                    py27_0    defaults
pycosat                   0.6.3            py27h14c3975_0    defaults
pycparser                 2.19                     py27_0    defaults
pycrypto                  2.6.1            py27h14c3975_9    defaults
pycurl                    7.43.0.2         py27h1ba5d50_0    defaults
pyflakes                  2.0.0                    py27_0    defaults
pygments                  2.3.1                    py27_0    defaults
pylint                    1.9.2                    py27_0    defaults
pyodbc                    4.0.25           py27he6710b0_0    defaults
pyopenssl                 18.0.0                   py27_0    defaults
pyparsing                 2.3.0                    py27_0    defaults
Pyphen                    0.9.5                     <pip>
pyqt                      5.9.2            py27h05f1152_2    defaults
pysocks                   1.6.8                    py27_0    defaults
pytables                  3.4.4            py27ha205bf6_0    defaults
pytest                    4.0.2                    py27_0    defaults
python                    2.7.15               h9bab390_6    defaults
python-dateutil           2.7.5                    py27_0    defaults
python-Levenshtein        0.12.0                    <pip>
python-libarchive-c       2.8                      py27_6    defaults
pytz                      2018.7                   py27_0    defaults
PyVCF                     0.6.8                     <pip>
pywavelets                1.0.1            py27hdd07704_0    defaults
pyyaml                    3.13             py27h14c3975_0    defaults
pyzmq                     17.1.2           py27h14c3975_0    defaults
qt                        5.9.7                h5867ecd_1    defaults
qtawesome                 0.5.3                    py27_0    defaults
qtconsole                 4.4.3                    py27_0    defaults
qtpy                      1.5.2                    py27_0    defaults
readline                  7.0                  h7b6447c_5    defaults
requests                  2.21.0                   py27_0    defaults
rope                      0.11.0                   py27_0    defaults
ruamel_yaml               0.15.46          py27h14c3975_0    defaults
scandir                   1.9.0            py27h14c3975_0    defaults
scikit-image              0.14.1           py27he6710b0_0    defaults
scikit-learn              0.20.1           py27hd81dba3_0    defaults
scipy                     1.1.0            py27h7c811a0_2    defaults
seaborn                   0.9.0                    py27_0    defaults
send2trash                1.5.0                    py27_0    defaults
setuptools                40.6.3                   py27_0    defaults
simplegeneric             0.8.1                    py27_2    defaults
singledispatch            3.4.0.3          py27h9bcb476_0    defaults
sip                       4.19.8           py27hf484d3e_0    defaults
six                       1.12.0                   py27_0    defaults
snappy                    1.1.7                hbae5bb6_3    defaults
snowballstemmer           1.2.1            py27h44e2768_0    defaults
sortedcollections         1.0.1                    py27_0    defaults
sortedcontainers          2.1.0                    py27_0    defaults
sphinx                    1.8.2                    py27_0    defaults
sphinxcontrib             1.0                      py27_1    defaults
sphinxcontrib-websupport  1.1.0                    py27_1    defaults
spyder                    3.3.2                    py27_0    defaults
spyder-kernels            0.3.0                    py27_0    defaults
sqlalchemy                1.2.15           py27h7b6447c_0    defaults
sqlite                    3.26.0               h7b6447c_0    defaults
ssl_match_hostname        3.5.0.1                  py27_2    defaults
statsmodels               0.9.0            py27h035aef0_0    defaults
subprocess32              3.5.3            py27h7b6447c_0    defaults
sympy                     1.3                      py27_0    defaults
tblib                     1.3.2            py27h51fe5ba_0    defaults
terminado                 0.8.1                    py27_1    defaults
testpath                  0.4.2                    py27_0    defaults
tinycss2                  0.6.1                     <pip>
tk                        8.6.8                hbc83047_0    defaults
toolz                     0.9.0                    py27_0    defaults
tornado                   5.1.1            py27h7b6447c_0    defaults
tqdm                      4.28.1           py27h28b3542_0    defaults
traceback2                1.4.0                    py27_0    defaults
traitlets                 4.3.2            py27hd6ce930_0    defaults
typing                    3.6.6                    py27_0    defaults
unicodecsv                0.14.1           py27h5062da9_0    defaults
unittest2                 1.1.0                    py27_0    defaults
unixodbc                  2.3.7                h14c3975_0    defaults
urllib3                   1.24.1                   py27_0    defaults
wcwidth                   0.1.7            py27h9e3e1ab_0    defaults
WeasyPrint                0.42.3                    <pip>
webencodings              0.5.1                    py27_1    defaults
werkzeug                  0.14.1                   py27_0    defaults
wheel                     0.32.3                   py27_0    defaults
widgetsnbextension        3.4.2                    py27_0    defaults
wrapt                     1.10.11          py27h14c3975_2    defaults
wurlitzer                 1.0.2                    py27_0    defaults
xlrd                      1.2.0                    py27_0    defaults
xlsxwriter                1.1.2                    py27_0    defaults
xlwt                      1.3.0            py27h3d85d97_0    defaults
xz                        5.2.4                h14c3975_4    defaults
yaml                      0.1.7                had09818_2    defaults
zeromq                    4.2.5                hf484d3e_1    defaults
zict                      0.1.3                    py27_0    defaults
zlib                      1.2.11               h7b6447c_3    defaults
zstd                      1.3.7                h0b5b093_0    defaults

Curiously, when I look at the util.py source code github, I am not readily seeing the history on the code changes which have caused all this very new trouble.....

.../anaconda2/lib/python2.7/ctypes$ diff util.prior_good.py util.new_bad.py 273a274

287,288c288,298 < return _findLib_prefix(_get_soname(_findLib_prefix(name))) or \ < _findSoname_ldconfig(name) or _get_soname(_findLib_gcc(name))

        # When objdump is unavailable this returns None
        so_name = _get_soname(_findLib_prefix(name)) or name
        if so_name != name:
            return _findLib_prefix(so_name) or \
                   _findLib_prefix(name) or \
                   _findSoname_ldconfig(name) or \
                   _get_soname(_findLib_gcc(name))
        else:
            return _findLib_prefix(name) or \
                   _findSoname_ldconfig(name) or \
                   _get_soname(_findLib_gcc(name))
mingwandroid commented 5 years ago

Thanks for the report. I will investigate this later.

anikaendler commented 5 years ago

Pes komani ID roxanafatyol6@gmail.com ender.anos11@gmail.com