Skip to content

Dependencies in requirements.txt have module conflicts. #113

@unsatisfying

Description

@unsatisfying

Background

Dependencies in requirements.txt have module conflicts.

Description

There are two dependencies mentioned in the requirements.txt file: mkl-random==1.0.1 and numpy==1.16.4 and the 'mkl-random==1.0.1' depends on intel-numpy (<1.15,>=1.14). To my knowledge, there appears to be a conflict between these two packages. These two packages are both Fundamental packages for array computing. They share many modules (with different contents). During the pip installation process, both of these packages will be installed simultaneously. However, pip does not isolate these two packages, but rather installs them both in the site-packages directory. This leads to the situation where modules from the later installed package overwrite the modules with the same paths installed by the earlier package.

Steps to Reproduce

pip install -r requirements.txt

Desired Change

Furthermore, I have observed that the latest version of mkl-random no longer depends on intel-numpy, but instead utilizes numpy. Perhaps, if compatibility permits, updating the dependency of mkl-random to the new version can resolve this conflict.

Indeed, it is not an ideal behavior for modules to be overwritten, even if they are not actively used or if the overwritten module is the one being called. It introduces uncertainty and can cause issues in the long run, especially if there are changes or updates to the overwritten modules in future development. It is generally recommended to avoid such conflicts and ensure that only the necessary and compatible dependencies are declared in the requirements to maintain a stable and predictable environment for the project.

We believe that although this project can only modify direct dependencies and indirect dependencies are a black box, it is possible to add additional explanations rather than directly declaring both conflicting packages in the requirements.txt file.

Adding extra explanations or documentation about the potential conflicts and the need to choose only one of the conflicting packages can help developers understand the issue and make informed decisions. Including a clear instruction or warning in the project’s documentation can guide users to choose the appropriate package based on their specific requirements.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions