Search code examples
pythonpytorchpipconda

Why does torch.utils.collect_env claim I've pip installed modules that I used conda to install


I've had some odd behavior with a torch installation, so I ran python -m torch.utils.collect_env to get a clear idea of ehat was in my environment, but it claimed I had used both pip3 and conda to install some modules.

So, I created a simplified conda env, which still gives this problem:

$ conda create -n temp
$ conda activate temp
$ conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia


 
<frozen runpy>:128: RuntimeWarning: 'torch.utils.collect_env' found in sys.modules after import of package 'torch.utils', but prior to execution of 'torch.utils.collect_env'; this may result in unpredictable behaviour
Collecting environment information...
PyTorch version: 2.3.0
Is debug build: False
CUDA used to build PyTorch: 12.1
ROCM used to build PyTorch: N/A

OS: Ubuntu 20.04.6 LTS (x86_64)
GCC version: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Clang version: Could not collect
CMake version: version 3.16.3
Libc version: glibc-2.31

Python version: 3.12.3 | packaged by Anaconda, Inc. | (main, May  6 2024, 19:46:43) [GCC 11.2.0] (64-bit runtime)
Python platform: Linux-5.15.0-105-generic-x86_64-with-glibc2.31
Is CUDA available: True
CUDA runtime version: 12.1.105
CUDA_MODULE_LOADING set to: LAZY
GPU models and configuration: GPU 0: NVIDIA GeForce RTX 3080 Ti
Nvidia driver version: 535.171.04
cuDNN version: /usr/lib/x86_64-linux-gnu/libcudnn.so.7.6.5
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True

.
.
.
Versions of relevant libraries:
[pip3] numpy==1.26.4
[pip3] torch==2.3.0
[pip3] torchaudio==2.3.0
[pip3] torchvision==0.18.0
[conda] blas                      1.0                         mkl  
[conda] ffmpeg                    4.3                  hf484d3e_0    pytorch
[conda] libjpeg-turbo             2.0.0                h9bf148f_0    pytorch
[conda] mkl                       2023.1.0         h213fc3f_46344  
[conda] mkl-service               2.4.0           py312h5eee18b_1  
[conda] mkl_fft                   1.3.8           py312h5eee18b_0  
[conda] mkl_random                1.2.4           py312hdb19cb5_0  
[conda] numpy                     1.26.4          py312hc5e2394_0  
[conda] numpy-base                1.26.4          py312h0da6c21_0  
[conda] pytorch                   2.3.0           py3.12_cuda12.1_cudnn8.9.2_0    pytorch
[conda] pytorch-cuda              12.1                 ha16c6d3_5    pytorch
[conda] pytorch-mutex             1.0                        cuda    pytorch
[conda] torchaudio                2.3.0               py312_cu121    pytorch
[conda] torchvision               0.18.0              py312_cu121    pytorch

Why does this say I've pip installed some modules which I used conda to install? Is it connected to this message:

'torch.utils.collect_env' found in sys.modules after import of package 'torch.utils', but prior to execution of 'torch.utils.collect_env'; this may result in unpredictable behaviour

If so, what should I do? Also, if not, what (if anything) should I do?


Solution

  • As documented in the code for the torch.utils.collect_env module, the get_pip_packages function simply runs and parses a pip list, which will also find Conda-installed Python packages. So, seems to be working as expected.

    It might be worth noting that most Conda recipes for Python packages use a pip install command to do the actual installation at build time. Conda then packages the difference in files before and after that command. So, a Conda-installed Python package is mostly as if one had run pip install. Hopefully that clarifies why running pip list can't discern that a package is from Conda, whereas conda list can tell the difference.