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

Numpy installation issue in Rye project when changing Python version #1423

Open
kubotty opened this issue Oct 23, 2024 · 1 comment
Open

Comments

@kubotty
Copy link

kubotty commented Oct 23, 2024

Steps to Reproduce

After installing numpy, if you change the Python version, rye continues to install the wrong version of numpy.

To initialize a project, follow the steps below:

> rye init
> rye add numpy
> rye pin 3.10
> rye sync

Rye still installs the wrong numpy version:

> rye run python
>>> import numpy
Traceback (most recent call last):
  File "D:\work\temp\rye-test3\.venv\lib\site-packages\numpy\_core\__init__.py", line 23, in <module>
    from . import multiarray
  File "D:\work\temp\rye-test3\.venv\lib\site-packages\numpy\_core\multiarray.py", line 10, in <module>
    from . import overrides
  File "D:\work\temp\rye-test3\.venv\lib\site-packages\numpy\_core\overrides.py", line 8, in <module>
    from numpy._core._multiarray_umath import (
ModuleNotFoundError: No module named 'numpy._core._multiarray_umath'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\work\temp\rye-test3\.venv\lib\site-packages\numpy\__init__.py", line 128, in <module>
    from numpy.__config__ import show as show_config
  File "D:\work\temp\rye-test3\.venv\lib\site-packages\numpy\__config__.py", line 4, in <module>
    from numpy._core._multiarray_umath import (
  File "D:\work\temp\rye-test3\.venv\lib\site-packages\numpy\_core\__init__.py", line 49, in <module>
    raise ImportError(msg)
ImportError:

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.

We have compiled some common reasons and troubleshooting tips at:

    https://numpy.org/devdocs/user/troubleshooting-importerror.html

Please note and check the following:

  * The Python version is: Python3.10 from "D:\work\temp\rye-test3\.venv\Scripts\python.exe"
  * The NumPy version is: "2.1.2"

and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.

Original error was: No module named 'numpy._core._multiarray_umath'


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\work\temp\rye-test3\.venv\lib\site-packages\numpy\__init__.py", line 133, in <module>
    raise ImportError(msg) from e
ImportError: Error importing numpy: you should not try to import numpy from
        its source directory; please exit the numpy source tree, and relaunch
        your python interpreter from there.

If you force a sync with rye sync -f, or even if you delete the .venv directory and sync again with rye sync, it still installs the wrong version.

Expected Result

I expect the correct version of numpy to be installed.

If the order is changed between rye pin and rye add numpy, I could get expected behavior:

> rye init
> rye pin 3.10
> rye add numpy
> rye run python
>>> import numpy
>>> np.__version__
'2.1.2'

Actual Result

You can confirm that the wrong version is installed by checking the following directory:

> ls .\.venv\Lib\site-packages\
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2024/10/23     13:47                numpy
d-----        2024/10/23     13:47                numpy-2.1.2.dist-info
d-----        2024/10/23     13:47                numpy.libs
d-----        2024/10/23     13:47                rye_test3-0.1.0.dist-info
d-----        2024/10/23     13:47                __pycache__
-a----        2024/10/23     13:19              0 numpy-2.1.2-cp312-cp312-win_amd64.whl
-a----        2024/10/23     13:39             26 _rye_test3.pth
-a----        2024/10/23     13:47             18 _virtualenv.pth
-a----        2024/10/23     13:47           4342 _virtualenv.py

Although the Python version is 3.10, the numpy distribution for Python 3.12 is mistakenly installed.

Version Info

rye 0.41.0
commit: 0.41.0 (10d691d 2024-09-29)
platform: windows (x86_64)
self-python: [email protected]
symlink support: false
uv enabled: true

Stacktrace

No response

@kubotty
Copy link
Author

kubotty commented Oct 23, 2024

When I deleted the project directory (the parent directory of .venv) and then recreated a directory with the same name in the same location, I was able to reproduce the issue as follows:

> rye init
> rye pin 3.10
> rye add numpy
> rye run python
>>> import numpy

It seems that the initially downloaded wheel file is cached with the path, causing it to be used regardless of the Python version.

Furthermore, I noticed that the issue also occurs when starting with Python 3.11 and then changing to Python 3.12.

This issue seems to be related to #1400

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

1 participant