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

os.add_dll_directory does not work as expected #12475

Closed
geoffdavey opened this issue Jun 15, 2021 · 6 comments
Closed

os.add_dll_directory does not work as expected #12475

geoffdavey opened this issue Jun 15, 2021 · 6 comments

Comments

@geoffdavey
Copy link

Actual Behavior

An import of a Python extension that depends on a DLL that is located in an arbitrary directory will fail, even if the directory containing the DLL has been added to the search path with os.add_dll_directory. The user gets an ImportError e.g.

ImportError: DLL load failed while importing my_module: The specified module could not be found.

Setting the environment variable CONDA_DLL_SEARCH_MODIFICATION_ENABLE=1 causes os.add_dll_directory to work as expected and importing the package succeeds.

Expected Behavior

If os.add_dll_directory has been called appropriately the import should succeed, even if CONDA_DLL_SEARCH_MODIFICATION_ENABLE has not been set.

Steps to Reproduce

The easiest way is to try using a package that depends on os.add_dll_directory e.g. Confluent Kafka Python:

pip install confluent-kafka

and then

(plaid) PS C:\> python
Python 3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import confluent_kafka
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\gdavey\Anaconda3-2021.05\envs\plaid\lib\site-packages\confluent_kafka\__init__.py", line 40, in <module>
    from .deserializing_consumer import DeserializingConsumer
  File "C:\Users\gdavey\Anaconda3-2021.05\envs\plaid\lib\site-packages\confluent_kafka\deserializing_consumer.py", line 19, in <module>
    from confluent_kafka.cimpl import Consumer as _ConsumerImpl
ImportError: DLL load failed while importing cimpl: The specified module could not be found.
>>> exit()
(plaid) PS C:\>
(plaid) PS C:\> $env:CONDA_DLL_SEARCH_MODIFICATION_ENABLE=1
(plaid) PS C:\> python
Python 3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import confluent_kafka
>>>

I've also reproduced this behaviour with a test Python extension and a test DLL, so the problem is not specific to Confluent Kafka.

Anaconda or Miniconda version:

Anaconda 2021.05

Operating System:

Windows 10

conda info
     active environment : base
    active env location : C:\Users\gdavey\Anaconda3-2021.05
            shell level : 1
       user config file : C:\Users\gdavey\.condarc
 populated config files : C:\Users\gdavey\.condarc
          conda version : 4.10.1
    conda-build version : 3.21.4
         python version : 3.8.8.final.0
       virtual packages : __win=0=0
                          __archspec=1=x86_64
       base environment : C:\Users\gdavey\Anaconda3-2021.05  (writable)
      conda av data dir : C:\Users\gdavey\Anaconda3-2021.05\etc\conda
  conda av metadata url : https://repo.anaconda.com/pkgs/main
           channel URLs : https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : C:\Users\gdavey\Anaconda3-2021.05\pkgs
                          C:\Users\gdavey\.conda\pkgs
                          C:\Users\gdavey\AppData\Local\conda\conda\pkgs
       envs directories : C:\Users\gdavey\Anaconda3-2021.05\envs
                          C:\Users\gdavey\.conda\envs
                          C:\Users\gdavey\AppData\Local\conda\conda\envs
               platform : win-64
             user-agent : conda/4.10.1 requests/2.25.1 CPython/3.8.8 Windows/10 Windows/10.0.18362
          administrator : False
             netrc file : None
           offline mode : False

conda list --show-channel-urls
# packages in environment at C:\Users\gdavey\Anaconda3-2021.05:
#
# Name                    Version                   Build  Channel
_ipyw_jlab_nb_ext_conf    0.1.0                    py38_0    defaults
alabaster                 0.7.12             pyhd3eb1b0_0    defaults
anaconda                  2021.05                  py38_0    defaults
anaconda-client           1.7.2                    py38_0    defaults
anaconda-navigator        2.0.3                    py38_0    defaults
anaconda-project          0.9.1              pyhd3eb1b0_1    defaults
anyio                     2.2.0            py38haa95532_2    defaults
appdirs                   1.4.4                      py_0    defaults
argh                      0.26.2                   py38_0    defaults
argon2-cffi               20.1.0           py38h2bbff1b_1    defaults
asn1crypto                1.4.0                      py_0    defaults
astroid                   2.5              py38haa95532_1    defaults
astropy                   4.2.1            py38h2bbff1b_1    defaults
async_generator           1.10               pyhd3eb1b0_0    defaults
atomicwrites              1.4.0                      py_0    defaults
attrs                     20.3.0             pyhd3eb1b0_0    defaults
autopep8                  1.5.6              pyhd3eb1b0_0    defaults
babel                     2.9.0              pyhd3eb1b0_0    defaults
backcall                  0.2.0              pyhd3eb1b0_0    defaults
backports                 1.0                pyhd3eb1b0_2    defaults
backports.functools_lru_cache 1.6.4              pyhd3eb1b0_0    defaults
backports.shutil_get_terminal_size 1.0.0              pyhd3eb1b0_3    defaults
backports.tempfile        1.0                pyhd3eb1b0_1    defaults
backports.weakref         1.0.post1                  py_1    defaults
bcrypt                    3.2.0            py38he774522_0    defaults
beautifulsoup4            4.9.3              pyha847dfd_0    defaults
bitarray                  1.9.2            py38h2bbff1b_1    defaults
bkcharts                  0.2                      py38_0    defaults
black                     19.10b0                    py_0    defaults
blas                      1.0                         mkl    defaults
bleach                    3.3.0              pyhd3eb1b0_0    defaults
blosc                     1.21.0               h19a0ad4_0    defaults
bokeh                     2.3.2            py38haa95532_0    defaults
boto                      2.49.0                   py38_0    defaults
bottleneck                1.3.2            py38h2a96729_1    defaults
brotli                    1.0.9                ha925a31_2    defaults
brotlipy                  0.7.0           py38h2bbff1b_1003    defaults
bzip2                     1.0.8                he774522_0    defaults
ca-certificates           2021.4.13            haa95532_1    defaults
certifi                   2020.12.5        py38haa95532_0    defaults
cffi                      1.14.5           py38hcd4344a_0    defaults
chardet                   4.0.0           py38haa95532_1003    defaults
charls                    2.2.0                h6c2663c_0    defaults
click                     7.1.2              pyhd3eb1b0_0    defaults
cloudpickle               1.6.0                      py_0    defaults
clyent                    1.2.2                    py38_1    defaults
colorama                  0.4.4              pyhd3eb1b0_0    defaults
comtypes                  1.1.9           py38haa95532_1002    defaults
conda                     4.10.1           py38haa95532_1    defaults
conda-build               3.21.4           py38haa95532_0    defaults
conda-content-trust       0.1.1              pyhd3eb1b0_0    defaults
conda-env                 2.6.0                         1    defaults
conda-package-handling    1.7.3            py38h8cc25b3_1    defaults
conda-repo-cli            1.0.4              pyhd3eb1b0_0    defaults
conda-token               0.3.0              pyhd3eb1b0_0    defaults
conda-verify              3.4.2                      py_1    defaults
console_shortcut          0.1.1                         4    defaults
contextlib2               0.6.0.post1                py_0    defaults
cryptography              3.4.7            py38h71e12ea_0    defaults
curl                      7.71.1               h2a8f88b_1    defaults
cycler                    0.10.0                   py38_0    defaults
cython                    0.29.23          py38hd77b12b_0    defaults
cytoolz                   0.11.0           py38he774522_0    defaults
dask                      2021.4.0           pyhd3eb1b0_0    defaults
dask-core                 2021.4.0           pyhd3eb1b0_0    defaults
decorator                 5.0.6              pyhd3eb1b0_0    defaults
defusedxml                0.7.1              pyhd3eb1b0_0    defaults
diff-match-patch          20200713                   py_0    defaults
distributed               2021.4.0         py38haa95532_0    defaults
docutils                  0.17             py38haa95532_1    defaults
entrypoints               0.3                      py38_0    defaults
et_xmlfile                1.0.1                   py_1001    defaults
fastcache                 1.1.0            py38he774522_0    defaults
filelock                  3.0.12             pyhd3eb1b0_1    defaults
flake8                    3.9.0              pyhd3eb1b0_0    defaults
flask                     1.1.2              pyhd3eb1b0_0    defaults
freetype                  2.10.4               hd328e21_0    defaults
fsspec                    0.9.0              pyhd3eb1b0_0    defaults
future                    0.18.2                   py38_1    defaults
get_terminal_size         1.0.0                h38e98db_0    defaults
gevent                    21.1.2           py38h2bbff1b_1    defaults
giflib                    5.2.1                h62dcd97_0    defaults
glob2                     0.7                pyhd3eb1b0_0    defaults
greenlet                  1.0.0            py38hd77b12b_2    defaults
h5py                      2.10.0           py38h5e291fa_0    defaults
hdf5                      1.10.4               h7ebc959_0    defaults
heapdict                  1.0.1                      py_0    defaults
html5lib                  1.1                        py_0    defaults
icc_rt                    2019.0.0             h0cc432a_1    defaults
icu                       58.2                 ha925a31_3    defaults
idna                      2.10               pyhd3eb1b0_0    defaults
imagecodecs               2021.3.31        py38h5da4933_0    defaults
imageio                   2.9.0              pyhd3eb1b0_0    defaults
imagesize                 1.2.0              pyhd3eb1b0_0    defaults
importlib-metadata        3.10.0           py38haa95532_0    defaults
importlib_metadata        3.10.0               hd3eb1b0_0    defaults
iniconfig                 1.1.1              pyhd3eb1b0_0    defaults
intel-openmp              2021.2.0           haa95532_616    defaults
intervaltree              3.1.0                      py_0    defaults
ipykernel                 5.3.4            py38h5ca1d4c_0    defaults
ipython                   7.22.0           py38hd4e2768_0    defaults
ipython_genutils          0.2.0              pyhd3eb1b0_1    defaults
ipywidgets                7.6.3              pyhd3eb1b0_1    defaults
isort                     5.8.0              pyhd3eb1b0_0    defaults
itsdangerous              1.1.0              pyhd3eb1b0_0    defaults
jdcal                     1.4.1                      py_0    defaults
jedi                      0.17.2           py38haa95532_1    defaults
jinja2                    2.11.3             pyhd3eb1b0_0    defaults
joblib                    1.0.1              pyhd3eb1b0_0    defaults
jpeg                      9b                   hb83a4c4_2    defaults
json5                     0.9.5                      py_0    defaults
jsonschema                3.2.0                      py_2    defaults
jupyter                   1.0.0                    py38_7    defaults
jupyter-packaging         0.7.12             pyhd3eb1b0_0    defaults
jupyter_client            6.1.12             pyhd3eb1b0_0    defaults
jupyter_console           6.4.0              pyhd3eb1b0_0    defaults
jupyter_core              4.7.1            py38haa95532_0    defaults
jupyter_server            1.4.1            py38haa95532_0    defaults
jupyterlab                3.0.14             pyhd3eb1b0_1    defaults
jupyterlab_pygments       0.1.2                      py_0    defaults
jupyterlab_server         2.4.0              pyhd3eb1b0_0    defaults
jupyterlab_widgets        1.0.0              pyhd3eb1b0_1    defaults
keyring                   22.3.0           py38haa95532_0    defaults
kiwisolver                1.3.1            py38hd77b12b_0    defaults
krb5                      1.18.2               hc04afaa_0    defaults
lazy-object-proxy         1.6.0            py38h2bbff1b_0    defaults
lcms2                     2.12                 h83e58a3_0    defaults
lerc                      2.2.1                hd77b12b_0    defaults
libaec                    1.0.4                h33f27b4_1    defaults
libarchive                3.4.2                h5e25573_0    defaults
libcurl                   7.71.1               h2a8f88b_1    defaults
libdeflate                1.7                  h2bbff1b_5    defaults
libiconv                  1.15                 h1df5818_7    defaults
liblief                   0.10.1               ha925a31_0    defaults
libpng                    1.6.37               h2a8f88b_0    defaults
libsodium                 1.0.18               h62dcd97_0    defaults
libspatialindex           1.9.3                h6c2663c_0    defaults
libssh2                   1.9.0                h7a1dbc1_1    defaults
libtiff                   4.2.0                hd0e1b90_0    defaults
libxml2                   2.9.10               hb89e7f3_3    defaults
libxslt                   1.1.34               he774522_0    defaults
libzopfli                 1.0.3                ha925a31_0    defaults
llvmlite                  0.36.0           py38h34b8924_4    defaults
locket                    0.2.1            py38haa95532_1    defaults
lxml                      4.6.3            py38h9b66d53_0    defaults
lz4-c                     1.9.3                h2bbff1b_0    defaults
lzo                       2.10                 he774522_2    defaults
m2w64-gcc-libgfortran     5.3.0                         6    defaults
m2w64-gcc-libs            5.3.0                         7    defaults
m2w64-gcc-libs-core       5.3.0                         7    defaults
m2w64-gmp                 6.1.0                         2    defaults
m2w64-libwinpthread-git   5.0.0.4634.697f757               2    defaults
markupsafe                1.1.1            py38he774522_0    defaults
matplotlib                3.3.4            py38haa95532_0    defaults
matplotlib-base           3.3.4            py38h49ac443_0    defaults
mccabe                    0.6.1                    py38_1    defaults
menuinst                  1.4.16           py38he774522_1    defaults
mistune                   0.8.4           py38he774522_1000    defaults
mkl                       2021.2.0           haa95532_296    defaults
mkl-service               2.3.0            py38h2bbff1b_1    defaults
mkl_fft                   1.3.0            py38h277e83a_2    defaults
mkl_random                1.2.1            py38hf11a4ad_2    defaults
mock                      4.0.3              pyhd3eb1b0_0    defaults
more-itertools            8.7.0              pyhd3eb1b0_0    defaults
mpmath                    1.2.1            py38haa95532_0    defaults
msgpack-python            1.0.2            py38h59b6b97_1    defaults
msys2-conda-epoch         20160418                      1    defaults
multipledispatch          0.6.0                    py38_0    defaults
mypy_extensions           0.4.3                    py38_0    defaults
navigator-updater         0.2.1                    py38_0    defaults
nbclassic                 0.2.6              pyhd3eb1b0_0    defaults
nbclient                  0.5.3              pyhd3eb1b0_0    defaults
nbconvert                 6.0.7                    py38_0    defaults
nbformat                  5.1.3              pyhd3eb1b0_0    defaults
nest-asyncio              1.5.1              pyhd3eb1b0_0    defaults
networkx                  2.5                        py_0    defaults
nltk                      3.6.1              pyhd3eb1b0_0    defaults
nose                      1.3.7           pyhd3eb1b0_1006    defaults
notebook                  6.3.0            py38haa95532_0    defaults
numba                     0.53.1           py38hf11a4ad_0    defaults
numexpr                   2.7.3            py38hb80d3ca_1    defaults
numpy                     1.20.1           py38h34a8a5c_0    defaults
numpy-base                1.20.1           py38haf7ebc8_0    defaults
numpydoc                  1.1.0              pyhd3eb1b0_1    defaults
olefile                   0.46                       py_0    defaults
openjpeg                  2.3.0                h5ec785f_1    defaults
openpyxl                  3.0.7              pyhd3eb1b0_0    defaults
openssl                   1.1.1k               h2bbff1b_0    defaults
packaging                 20.9               pyhd3eb1b0_0    defaults
pandas                    1.2.4            py38hd77b12b_0    defaults
pandoc                    2.12                 haa95532_0    defaults
pandocfilters             1.4.3            py38haa95532_1    defaults
paramiko                  2.7.2                      py_0    defaults
parso                     0.7.0                      py_0    defaults
partd                     1.2.0              pyhd3eb1b0_0    defaults
path                      15.1.2           py38haa95532_0    defaults
path.py                   12.5.0                        0    defaults
pathlib2                  2.3.5            py38haa95532_2    defaults
pathspec                  0.7.0                      py_0    defaults
patsy                     0.5.1                    py38_0    defaults
pep8                      1.7.1                    py38_0    defaults
pexpect                   4.8.0              pyhd3eb1b0_3    defaults
pickleshare               0.7.5           pyhd3eb1b0_1003    defaults
pillow                    8.2.0            py38h4fa10fc_0    defaults
pip                       21.0.1           py38haa95532_0    defaults
pkginfo                   1.7.0            py38haa95532_0    defaults
pluggy                    0.13.1           py38haa95532_0    defaults
ply                       3.11                     py38_0    defaults
powershell_shortcut       0.0.1                         3    defaults
prometheus_client         0.10.1             pyhd3eb1b0_0    defaults
prompt-toolkit            3.0.17             pyh06a4308_0    defaults
prompt_toolkit            3.0.17               hd3eb1b0_0    defaults
psutil                    5.8.0            py38h2bbff1b_1    defaults
ptyprocess                0.7.0              pyhd3eb1b0_2    defaults
py                        1.10.0             pyhd3eb1b0_0    defaults
py-lief                   0.10.1           py38ha925a31_0    defaults
pycodestyle               2.6.0              pyhd3eb1b0_0    defaults
pycosat                   0.6.3            py38h2bbff1b_0    defaults
pycparser                 2.20                       py_2    defaults
pycurl                    7.43.0.6         py38h7a1dbc1_0    defaults
pydocstyle                6.0.0              pyhd3eb1b0_0    defaults
pyerfa                    1.7.3            py38h2bbff1b_0    defaults
pyflakes                  2.2.0              pyhd3eb1b0_0    defaults
pygments                  2.8.1              pyhd3eb1b0_0    defaults
pylint                    2.7.4            py38haa95532_1    defaults
pyls-black                0.4.6                hd3eb1b0_0    defaults
pyls-spyder               0.3.2              pyhd3eb1b0_0    defaults
pynacl                    1.4.0            py38h62dcd97_1    defaults
pyodbc                    4.0.30           py38ha925a31_0    defaults
pyopenssl                 20.0.1             pyhd3eb1b0_1    defaults
pyparsing                 2.4.7              pyhd3eb1b0_0    defaults
pyqt                      5.9.2            py38ha925a31_4    defaults
pyreadline                2.1                      py38_1    defaults
pyrsistent                0.17.3           py38he774522_0    defaults
pysocks                   1.7.1            py38haa95532_0    defaults
pytables                  3.6.1            py38ha5be198_0    defaults
pytest                    6.2.3            py38haa95532_2    defaults
python                    3.8.8                hdbf39b2_5    defaults
python-dateutil           2.8.1              pyhd3eb1b0_0    defaults
python-jsonrpc-server     0.4.0                      py_0    defaults
python-language-server    0.36.2             pyhd3eb1b0_0    defaults
python-libarchive-c       2.9                pyhd3eb1b0_1    defaults
pytz                      2021.1             pyhd3eb1b0_0    defaults
pywavelets                1.1.1            py38he774522_2    defaults
pywin32                   227              py38he774522_1    defaults
pywin32-ctypes            0.2.0                 py38_1000    defaults
pywinpty                  0.5.7                    py38_0    defaults
pyyaml                    5.4.1            py38h2bbff1b_1    defaults
pyzmq                     20.0.0           py38hd77b12b_1    defaults
qdarkstyle                2.8.1                      py_0    defaults
qt                        5.9.7            vc14h73c81de_0    defaults
qtawesome                 1.0.2              pyhd3eb1b0_0    defaults
qtconsole                 5.0.3              pyhd3eb1b0_0    defaults
qtpy                      1.9.0                      py_0    defaults
regex                     2021.4.4         py38h2bbff1b_0    defaults
requests                  2.25.1             pyhd3eb1b0_0    defaults
rope                      0.18.0                     py_0    defaults
rtree                     0.9.7            py38h2eaa2aa_1    defaults
ruamel_yaml               0.15.100         py38h2bbff1b_0    defaults
scikit-image              0.18.1           py38hf11a4ad_0    defaults
scikit-learn              0.24.1           py38hf11a4ad_0    defaults
scipy                     1.6.2            py38h66253e8_1    defaults
seaborn                   0.11.1             pyhd3eb1b0_0    defaults
send2trash                1.5.0              pyhd3eb1b0_1    defaults
setuptools                52.0.0           py38haa95532_0    defaults
simplegeneric             0.8.1                    py38_2    defaults
singledispatch            3.6.1           pyhd3eb1b0_1001    defaults
sip                       4.19.13          py38ha925a31_0    defaults
six                       1.15.0           py38haa95532_0    defaults
snappy                    1.1.8                h33f27b4_0    defaults
sniffio                   1.2.0            py38haa95532_1    defaults
snowballstemmer           2.1.0              pyhd3eb1b0_0    defaults
sortedcollections         2.1.0              pyhd3eb1b0_0    defaults
sortedcontainers          2.3.0              pyhd3eb1b0_0    defaults
soupsieve                 2.2.1              pyhd3eb1b0_0    defaults
sphinx                    4.0.1              pyhd3eb1b0_0    defaults
sphinxcontrib             1.0                      py38_1    defaults
sphinxcontrib-applehelp   1.0.2              pyhd3eb1b0_0    defaults
sphinxcontrib-devhelp     1.0.2              pyhd3eb1b0_0    defaults
sphinxcontrib-htmlhelp    1.0.3              pyhd3eb1b0_0    defaults
sphinxcontrib-jsmath      1.0.1              pyhd3eb1b0_0    defaults
sphinxcontrib-qthelp      1.0.3              pyhd3eb1b0_0    defaults
sphinxcontrib-serializinghtml 1.1.4              pyhd3eb1b0_0    defaults
sphinxcontrib-websupport  1.2.4                      py_0    defaults
spyder                    4.2.5            py38haa95532_0    defaults
spyder-kernels            1.10.2           py38haa95532_0    defaults
sqlalchemy                1.4.7            py38h2bbff1b_0    defaults
sqlite                    3.35.4               h2bbff1b_0    defaults
statsmodels               0.12.2           py38h2bbff1b_0    defaults
sympy                     1.8              py38haa95532_0    defaults
tbb                       2020.3               h74a9793_0    defaults
tblib                     1.7.0                      py_0    defaults
terminado                 0.9.4            py38haa95532_0    defaults
testpath                  0.4.4              pyhd3eb1b0_0    defaults
textdistance              4.2.1              pyhd3eb1b0_0    defaults
threadpoolctl             2.1.0              pyh5ca1d4c_0    defaults
three-merge               0.1.1              pyhd3eb1b0_0    defaults
tifffile                  2021.4.8           pyhd3eb1b0_2    defaults
tk                        8.6.10               he774522_0    defaults
toml                      0.10.2             pyhd3eb1b0_0    defaults
toolz                     0.11.1             pyhd3eb1b0_0    defaults
tornado                   6.1              py38h2bbff1b_0    defaults
tqdm                      4.59.0             pyhd3eb1b0_1    defaults
traitlets                 5.0.5              pyhd3eb1b0_0    defaults
typed-ast                 1.4.2            py38h2bbff1b_1    defaults
typing_extensions         3.7.4.3            pyha847dfd_0    defaults
ujson                     4.0.2            py38hd77b12b_0    defaults
unicodecsv                0.14.1                   py38_0    defaults
urllib3                   1.26.4             pyhd3eb1b0_0    defaults
vc                        14.2                 h21ff451_1    defaults
vs2015_runtime            14.27.29016          h5e58377_2    defaults
watchdog                  1.0.2            py38haa95532_1    defaults
wcwidth                   0.2.5                      py_0    defaults
webencodings              0.5.1                    py38_1    defaults
werkzeug                  1.0.1              pyhd3eb1b0_0    defaults
wheel                     0.36.2             pyhd3eb1b0_0    defaults
widgetsnbextension        3.5.1                    py38_0    defaults
win_inet_pton             1.1.0            py38haa95532_0    defaults
win_unicode_console       0.5                      py38_0    defaults
wincertstore              0.2                      py38_0    defaults
winpty                    0.4.3                         4    defaults
wrapt                     1.12.1           py38he774522_1    defaults
xlrd                      2.0.1              pyhd3eb1b0_0    defaults
xlsxwriter                1.3.8              pyhd3eb1b0_0    defaults
xlwings                   0.23.0           py38haa95532_0    defaults
xlwt                      1.3.0                    py38_0    defaults
xmltodict                 0.12.0                     py_0    defaults
xz                        5.2.5                h62dcd97_0    defaults
yaml                      0.2.5                he774522_0    defaults
yapf                      0.31.0             pyhd3eb1b0_0    defaults
zeromq                    4.3.3                ha925a31_3    defaults
zfp                       0.5.5                hd77b12b_6    defaults
zict                      2.0.0              pyhd3eb1b0_0    defaults
zipp                      3.4.1              pyhd3eb1b0_0    defaults
zlib                      1.2.11               h62dcd97_4    defaults
zope                      1.0                      py38_1    defaults
zope.event                4.5.0                    py38_0    defaults
zope.interface            5.3.0            py38h2bbff1b_0    defaults
zstd                      1.4.5                h04227a9_0    defaults

@rgommers
Copy link

rgommers commented Sep 5, 2021

Other issues:

Plus lots of incoming links to this issue. It looks like the behavior of CONDA_DLL_SEARCH_MODIFICATION_ENABLE=1 should become default. The question is just in what Python version this can happen - @chenghlee, @jezdez anything you could add here?

@jezdez
Copy link
Member

jezdez commented Sep 6, 2021

Only that this would be better suited for a Conda ticket since it's a default to change in Conda, not in the Anaconda distro.

@jezdez
Copy link
Member

jezdez commented Sep 6, 2021

Opened conda/conda#10897 to track this.

@rgommers
Copy link

rgommers commented Sep 7, 2021

Great, thanks @jezdez. I moved my comment to that issue. Maybe this issue should be closed then?

@jezdez
Copy link
Member

jezdez commented Sep 7, 2021

Yeah, agreed, I wanted to wait till you or @geoffdavey acknowledge the move. Unfortunately we can't transfer the issue outright to the conda GitHub org. Thanks for your contributions, all!

@viertelb
Copy link

viertelb commented Feb 1, 2022

I am not experienced so this might have other reasons, but I get the same error with Python 3.9:

import sys
import win32ui
import os
os.add_dll_directory(r'C:\Program Files\VLC Plus Player')
import vlc as vlcimp

will throw an error that the dll is not found in the working directory of my project (I removed parts of the path that are too personal to share). Putting the two relevant dlls in my working directory works out fine. But then self.vlc = vlcimp.Instance() will be None.

Traceback (most recent call last):
  File "C:\Users\....py", line 22, in <module>
    import vlc as vlcimp
  File "C:\Users\...\venv\lib\site-packages\vlc.py", line 210, in <module>
    dll, plugin_path  = find_lib()
  File "C:\Users\...\venv\lib\site-packages\vlc.py", line 170, in find_lib
    dll = ctypes.CDLL('.\\' + libname)
  File "C:\Users\...\AppData\Local\Programs\Python\Python39\lib\ctypes\__init__.py", line 374, in __init__
    self._handle = _dlopen(self._name, mode)
FileNotFoundError: Could not find module 'C:\Users\...WORKING_DIRECTORY\libvlc.dll' (or one of its dependencies). Try using the full path with constructor syntax.

Process finished with exit code 1

I posted a question: https://stackoverflow.com/questions/70937083/why-are-my-dlls-not-found-despite-me-importing-the-path-and-can-i-use-vlc-in-py

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

4 participants