facebookresearch / pytorch3d

PyTorch3D is FAIR's library of reusable components for deep learning with 3D data

Home Page:https://pytorch3d.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

unable to build from source - `cannot import name 'packaging' from 'pkg_resources'`

forresti opened this issue Β· comments

If you do not know the root cause of the problem / bug, and wish someone to help you, please
post according to this template:

πŸ› Bugs / Unexpected behaviors

I am on Linux, and I am unable to build the pytorch3d code from source.

Instructions To Reproduce the Issue:

Please include the following (depending on what the issue is):

  1. Any changes you made (git diff) or code you wrote
    I did not modify the code.

  2. The exact command(s) you ran:

conda create -n my_env
conda activate my_env

conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia

git clone https://github.com/facebookresearch/pytorch3d.git
cd pytorch3d
pip install -e .
  1. What you observed (including the full logs):
Obtaining file:///home/ubuntu/SyncMVD/pytorch3d                                                                     
  Preparing metadata (setup.py) ... error                                                                           
  error: subprocess-exited-with-error                                                                               
                                                                                                                    
  Γ— python setup.py egg_info did not run successfully.                                                              
  β”‚ exit code: 1                                                                                                    
  ╰─> [8 lines of output]                                                                                           
      Traceback (most recent call last):                                                                            
        File "<string>", line 2, in <module>                                                                        
        File "<pip-setuptools-caller>", line 34, in <module>                                                        
        File "/home/ubuntu/SyncMVD/pytorch3d/setup.py", line 17, in <module>                                        
          from torch.utils.cpp_extension import CppExtension, CUDA_HOME, CUDAExtension                              
        File "/home/ubuntu/anaconda3/envs/syncmvd2/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 25, in <module>
          from pkg_resources import packaging  # type: ignore[attr-defined]                                         
      ImportError: cannot import name 'packaging' from 'pkg_resources' (/home/ubuntu/anaconda3/envs/syncmvd2/lib/python3.8/site-packages/pkg_resources/__init__.py)
      [end of output]

The problem seems to happen when I use that older version of pytorch.
When I install pytorch with conda install pytorch::pytorch torchvision torchaudio -c pytorch, then pytorch3d builds fine. But, I am using this old PyTorch because I am trying to setup https://github.com/LIU-Yuxin/SyncMVD, which uses this old PyTorch.

Can you update setuptools in the environment?

I have the exact same issue...I have upgraded and downgraded setup tools, package manager, cuda, etc etc....

(models) D:\03 Innovation\pytorch3d>pip install -v -e .
Using pip 24.1.2 from C:\Users\perso\AppData\Roaming\Python\Python310\site-packages\pip (python 3.10)
Obtaining file:///D:/03%20Innovation/pytorch3d
  Running command python setup.py egg_info
  Traceback (most recent call last):
    File "<string>", line 2, in <module>
    File "<pip-setuptools-caller>", line 34, in <module>
    File "D:\03 Innovation\pytorch3d\setup.py", line 17, in <module>
      from torch.utils.cpp_extension import CppExtension, CUDA_HOME, CUDAExtension
    File "C:\ProgramData\miniforge3\envs\models\lib\site-packages\torch\utils\cpp_extension.py", line 25, in <module>
      from pkg_resources import packaging  # type: ignore[attr-defined]
  ImportError: cannot import name 'packaging' from 'pkg_resources' (C:\ProgramData\miniforge3\envs\models\lib\site-packages\pkg_resources\__init__.py)
  error: subprocess-exited-with-error

  Γ— python setup.py egg_info did not run successfully.
  β”‚ exit code: 1
  ╰─> See above for output.

  note: This error originates from a subprocess, and is likely not a problem with pip.
  full command: 'C:\ProgramData\miniforge3\envs\models\python.exe' -c '
  exec(compile('"'"''"'"''"'"'
  # This is <pip-setuptools-caller> -- a caller that pip uses to run setup.py
  #
  # - It imports setuptools before invoking setup.py, to enable projects that directly
  #   import from `distutils.core` to work with newer packaging standards.
  # - It provides a clear error message when setuptools is not installed.
  # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so
  #   setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning:
  #     manifest_maker: standard file '"'"'-c'"'"' not found".
  # - It generates a shim setup.py, for handling setup.cfg-only projects.
  import os, sys, tokenize

  try:
      import setuptools
  except ImportError as error:
      print(
          "ERROR: Can not execute `setup.py` since setuptools is not available in "
          "the build environment.",
          file=sys.stderr,
      )
      sys.exit(1)

  __file__ = %r
  sys.argv[0] = __file__

  if os.path.exists(__file__):
      filename = __file__
      with tokenize.open(__file__) as f:
          setup_py_code = f.read()
  else:
      filename = "<auto-generated setuptools caller>"
      setup_py_code = "from setuptools import setup; setup()"

  exec(compile(setup_py_code, filename, "exec"))
  '"'"''"'"''"'"' % ('"'"'D:\\03 Innovation\\pytorch3d\\setup.py'"'"',), "<pip-setuptools-caller>", "exec"))' egg_info --egg-base 'C:\Users\perso\AppData\Local\Temp\pip-pip-egg-info-p6rqbll5'
  cwd: D:\03 Innovation\pytorch3d\\
  Preparing metadata (setup.py) ... error
error: metadata-generation-failed

Γ— Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

@Fanie-Visagie I reduced your sample to the main output. I think we can't help - this looks like a general question of versions of python, setuptools and pytorch. It looks like you are on Windows, which may distinguish it from OP.

Hello I have the same problem trying to build a docker image to run https://github.com/NVlabs/BundleSDF.git. The docker image is this one: dockerfile.
It is failing at installing https://github.com/facebookresearch/pytorch3d.git with the same error as OP:

=> ERROR [13/18] RUN conda init bash && echo "conda activate py38" >> ~/.bashrc && conda activate py38 && pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 -- 737.3s

[13/18] RUN conda init bash && echo "conda activate py38" >> ~/.bashrc && conda activate py38 && pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113 && pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable" && pip install trimesh opencv-python wandb matplotlib imageio tqdm open3d ruamel.yaml sacred kornia pymongo pyrender jupyterlab ninja && conda install -y -c anaconda scipy:
0.252 no change /opt/conda/condabin/conda
0.252 no change /opt/conda/bin/conda
0.252 no change /opt/conda/bin/conda-env
0.252 no change /opt/conda/bin/activate
0.252 no change /opt/conda/bin/deactivate
0.252 no change /opt/conda/etc/profile.d/conda.sh
0.252 no change /opt/conda/etc/fish/conf.d/conda.fish
0.252 no change /opt/conda/shell/condabin/Conda.psm1
0.252 no change /opt/conda/shell/condabin/conda-hook.ps1
0.252 no change /opt/conda/lib/python3.12/site-packages/xontrib/conda.xsh
0.252 no change /opt/conda/etc/profile.d/conda.csh
0.252 modified /root/.bashrc
0.252
0.252 ==> For changes to take effect, close and re-open your current shell. <==
0.252
0.531 Looking in indexes: https://pypi.org/simple, https://download.pytorch.org/whl/cu113
1.573 Collecting torch==1.11.0+cu113
2.072 Downloading https://download.pytorch.org/whl/cu113/torch-1.11.0%2Bcu113-cp38-cp38-linux_x86_64.whl (1637.0 MB)
683.2 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 GB 3.5 MB/s eta 0:00:00
685.3 Collecting torchvision==0.12.0+cu113
685.4 Downloading https://download.pytorch.org/whl/cu113/torchvision-0.12.0%2Bcu113-cp38-cp38-linux_x86_64.whl (22.3 MB)
689.3 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 22.3/22.3 MB 5.4 MB/s eta 0:00:00
690.0 Collecting torchaudio==0.11.0
690.0 Downloading https://download.pytorch.org/whl/cu113/torchaudio-0.11.0%2Bcu113-cp38-cp38-linux_x86_64.whl (2.9 MB)
690.5 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.9/2.9 MB 6.0 MB/s eta 0:00:00
691.0 Collecting typing-extensions (from torch==1.11.0+cu113)
691.3 Downloading typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)
692.2 Collecting numpy (from torchvision==0.12.0+cu113)
692.2 Downloading numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.6 kB)
692.7 Collecting requests (from torchvision==0.12.0+cu113)
692.8 Downloading requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
693.6 Collecting pillow!=8.3.*,>=5.3.0 (from torchvision==0.12.0+cu113)
693.7 Downloading pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl.metadata (9.2 kB)
694.4 Collecting charset-normalizer<4,>=2 (from requests->torchvision==0.12.0+cu113)
694.5 Downloading charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (33 kB)
695.1 Collecting idna<4,>=2.5 (from requests->torchvision==0.12.0+cu113)
695.2 Downloading idna-3.7-py3-none-any.whl.metadata (9.9 kB)
696.1 Collecting urllib3<3,>=1.21.1 (from requests->torchvision==0.12.0+cu113)
696.1 Downloading urllib3-2.2.2-py3-none-any.whl.metadata (6.4 kB)
696.8 Collecting certifi>=2017.4.17 (from requests->torchvision==0.12.0+cu113)
696.8 Downloading certifi-2024.7.4-py3-none-any.whl.metadata (2.2 kB)
696.9 Downloading pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl (4.5 MB)
700.5 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.5/4.5 MB 1.3 MB/s eta 0:00:00
700.5 Downloading numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.3 MB)
710.2 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 17.3/17.3 MB 2.3 MB/s eta 0:00:00
710.2 Downloading requests-2.32.3-py3-none-any.whl (64 kB)
710.3 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 64.9/64.9 kB 3.0 MB/s eta 0:00:00
710.3 Downloading typing_extensions-4.12.2-py3-none-any.whl (37 kB)
710.4 Downloading certifi-2024.7.4-py3-none-any.whl (162 kB)
710.4 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 163.0/163.0 kB 2.8 MB/s eta 0:00:00
710.5 Downloading charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (141 kB)
710.5 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 141.1/141.1 kB 2.6 MB/s eta 0:00:00
710.6 Downloading idna-3.7-py3-none-any.whl (66 kB)
710.6 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.8/66.8 kB 2.4 MB/s eta 0:00:00
710.6 Downloading urllib3-2.2.2-py3-none-any.whl (121 kB)
710.7 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 121.4/121.4 kB 3.3 MB/s eta 0:00:00
710.8 Installing collected packages: urllib3, typing-extensions, pillow, numpy, idna, charset-normalizer, certifi, torch, requests, torchvision, torchaudio
728.1 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
728.1 Successfully installed certifi-2024.7.4 charset-normalizer-3.3.2 idna-3.7 numpy-1.24.4 pillow-10.4.0 requests-2.32.3 torch-1.11.0+cu113 torchaudio-0.11.0+cu113 torchvision-0.12.0+cu113 typing-extensions-4.12.2 urllib3-2.2.2
729.6 Collecting git+https://github.com/facebookresearch/pytorch3d.git@stable
729.6 Cloning https://github.com/facebookresearch/pytorch3d.git (to revision stable) to /tmp/pip-req-build-ltyxrweo
729.6 Running command git clone --filter=blob:none --quiet https://github.com/facebookresearch/pytorch3d.git /tmp/pip-req-build-ltyxrweo
735.8 Running command git checkout -q 8965341
736.5 Resolved https://github.com/facebookresearch/pytorch3d.git to commit 8965341
736.5 Preparing metadata (setup.py): started
737.1 Preparing metadata (setup.py): finished with status 'error'
737.1 error: subprocess-exited-with-error
737.1
737.1 Γ— python setup.py egg_info did not run successfully.
737.1 β”‚ exit code: 1
737.1 ╰─> [8 lines of output]
737.1 Traceback (most recent call last):
737.1 File "", line 2, in
737.1 File "", line 34, in
737.1 File "/tmp/pip-req-build-ltyxrweo/setup.py", line 17, in
737.1 from torch.utils.cpp_extension import CppExtension, CUDA_HOME, CUDAExtension
737.1 File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 23, in
737.1 from pkg_resources import packaging # type: ignore[attr-defined]
737.1 ImportError: cannot import name 'packaging' from 'pkg_resources' (/opt/conda/envs/py38/lib/python3.8/site-packages/pkg_resources/init.py)
737.1 [end of output]
737.1
737.1 note: This error originates from a subprocess, and is likely not a problem with pip.
737.1 error: metadata-generation-failed
737.1
737.1 Γ— Encountered error while generating package metadata.
737.1 ╰─> See above for output.
737.1
737.1 note: This is an issue with the package mentioned above, not pip.
737.1 hint: See above for details.


3 warnings found (use --debug to expand):

  • LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 72)
  • LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 87)
  • LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 88)
    dockerfile:75

74 |
75 | >>> RUN conda init bash &&
76 | >>> echo "conda activate py38" >> ~/.bashrc &&
77 | >>> conda activate py38 &&
78 | >>> pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113 &&
79 | >>> pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable" &&
80 | >>> pip install trimesh opencv-python wandb matplotlib imageio tqdm open3d ruamel.yaml sacred kornia pymongo pyrender jupyterlab ninja &&
81 | >>> conda install -y -c anaconda scipy
82 |

ERROR: failed to solve: process "/bin/bash --login -c conda init bash && echo "conda activate py38" >> ~/.bashrc && conda activate py38 && pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113 && pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable\" && pip install trimesh opencv-python wandb matplotlib imageio tqdm open3d ruamel.yaml sacred kornia pymongo pyrender jupyterlab ninja && conda install -y -c anaconda scipy" did not complete successfully: exit code: 1

@misrolox BTW, you will need to have fvcore and iopath installed before the pip install will work, but that isn't the actual problem here. I don't know how to solve your error. Can you try with newer versions of python and pytorch?

Thank you for your answer. My problem was fixed by adding the line pip install setuptools==69.5.1 as mentioned by this issue.