Numpy conda package broken inside tox on Windows, Python 3.7/3.8
See original GitHub issueThe conda-package for numpy does not work on Windows inside a tox environment (using tox-conda):
Steps to reproduce are:
- Set up a
tox.ini
that usestox-conda
- Define a
tox
environment that hasnumpy
inconda_deps
, either from thedefault
or theconda-forge
channel - Invoke
tox
such thatnumpy
is imported inside the environment
The result in an error such as
Traceback (most recent call last):
File "C:\projects\2020-02-06-numpy-on-appveyor\.tox\envdir\lib\site-packages\numpy\core\__init__.py", line 24, in <module>
from . import multiarray
File "C:\projects\2020-02-06-numpy-on-appveyor\.tox\envdir\lib\site-packages\numpy\core\multiarray.py", line 14, in <module>
from . import overrides
File "C:\projects\2020-02-06-numpy-on-appveyor\.tox\envdir\lib\site-packages\numpy\core\overrides.py", line 7, in <module>
from numpy.core._multiarray_umath import (
ImportError: DLL load failed while importing _multiarray_umath: The specified module could not be found.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\projects\2020-02-06-numpy-on-appveyor\.tox\envdir\lib\site-packages\numpy\__init__.py", line 142, in <module>
from . import core
File "C:\projects\2020-02-06-numpy-on-appveyor\.tox\envdir\lib\site-packages\numpy\core\__init__.py", line 54, in <module>
raise ImportError(msg)
ImportError:
IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!
Importing the numpy c-extensions failed.
- Try uninstalling and reinstalling numpy.
- If you have already done that, then:
1. Check that you expected to use Python3.8 from "C:\projects\2020-02-06-numpy-on-appveyor\.tox\envdir\python.exe",
and that you have no directories in your PATH or PYTHONPATH that can
interfere with the Python and numpy version "1.18.1" you're trying to use.
2. If (1) looks fine, you can open a new issue at
https://github.com/numpy/numpy/issues. Please include details on:
- how you installed Python
- how you installed numpy
- your operating system
- whether or not you have multiple versions of Python installed
- if you built from source, your compiler versions and ideally a build log
- If you're working with a numpy git repository, try `git clean -xdf`
(removes all files not under version control) and rebuild numpy.
Note: this error has many possible causes, so please don't comment on
an existing issue about this - open a new one instead.
Original error was: DLL load failed while importing _multiarray_umath: The specified module could not be found.
ERROR: InvocationError for command 'C:\projects\2020-02-06-numpy-on-appveyor\.tox\envdir\python.exe' -c 'import numpy; print(numpy.__version__)' (exited with code 1)
The error occurs for Python versions 3.7 and 3.8, but not 3.6. It also only occurs when installing the numpy package inside of tox (as opposed to just the default conda environment directly)
I’ve set up a repository at https://github.com/goerz-testing/2020-02-06_numpy_on_appveyor that illustrates several variations of the problem. In that repository, the tox.ini
defines a run-cmd
environment to execute arbitrary commands inside the environment. In .appveyor.yml
I then invoke tox to run
python.exe -c "import numpy; print(numpy.__version__)"
inside the environment.
The repository reproduces the error on AppVeyor, but I’ve observed the same behavior “manually” on a standard Windows 10 installation.
Variations of things that do and don’t work are branches in the repository:
master
branch: Python 3.8, numpy from conda-forge channel ❌ (AppVeyor log)37
branch: Python 3.7, numpy from conda-forge channel ❌ (AppVeyor log)defaultchannel
branch: Python 3.8, numpy from default channel ❌ (AppVeyor log) → Problem isn’t just with the conda-forge numpy packagesystemtox
branch: Python 3.8, numpy from conda-forge channel, use system-tox instead of installing tox into conda ❌ (AppVeyor log) → Problem isn’t with the tox installed viaconda install tox
)36
branch: Python 3.6, numpy from conda-forge channe ✅ (AppVeyor log)notox
branch: Python 3.8, numpy from conda-forge channel, install into system-conda(no tox) ✅ (AppVeyor log)
It’s not clear whether numpy
or tox-conda
or a weird interaction between the two is responsible for the problem.
Issue Analytics
- State:
- Created 4 years ago
- Comments:6 (6 by maintainers)
os.getenv("CONDA_PREFIX") == sys.prefix
Do you need to activate your conda environment?