GithubHelp home page GithubHelp logo

decargroup / pymlg Goto Github PK

View Code? Open in Web Editor NEW
19.0 4.0 4.0 8.1 MB

Pure static Lie groups in Numpy, Jax, and C++

Home Page: https://decargroup.github.io/pymlg/

License: MIT License

Python 86.81% CMake 0.44% C++ 12.68% C 0.07%
lie-groups numpy python state-estimation jax

pymlg's Introduction

PyMLG - Matrix Lie groups with Numpy, Jax, and C++ implementations!

test package

An instantiation-free python package for common matrix Lie group operations implemented as pure static classes. Using pure static classes keeps the usage extremely simple while still allowing for abstraction and inheritance. We do not introduce new objects with stateful behavior that must be learnt. Everything operates directly on arrays/tensors. This allows users to implement their own more sophisticated objects using these classes as back-end mathematical implementations.

Installation

Begin by cloning this repo somewhere. To install, go to the clone directory and run

pip install -e .

Documentation

Documentation can be found here: https://decargroup.github.io/pymlg

Example

from pymlg import SE3 
import numpy as np

# Random pose
T = SE3.random()

# R^n to group directly (using "Capital" notation)
x = np.array([0.1, 0.2, 0.3, 4, 5, 6])
T = SE3.Exp(x)

# Group to R^n directly
x = SE3.Log(T)

# Wedge, vee
Xi = SE3.wedge(x)
x = SE3.vee(Xi)

# Actual exp/log maps 
T = SE3.exp(Xi)
Xi = SE3.log(T)

# Adjoint matrix representation of group element
A = SE3.adjoint(T)

# Adjoint representation of algebra element
ad = SE3.adjoint_algebra(Xi)

# Inverse of group element
T_inv = SE3.inverse(T)

# Group left/right jacobians, and their inverses
J_L = SE3.left_jacobian(x)
J_R = SE3.right_jacobian(x)
J_L_inv = SE3.left_jacobian_inv(x)
J_R_inv = SE3.right_jacobian_inv(x)

# ... and more.

Using Numpy/C++/Jax

To explicitly access pure numpy implementations use

from pymlg.numpy import SO2, SO3, SE2, SE3, SE23

To explicitly access classes which internally use C++ use

from pymlg.cpp import SO3, SE3, SE23

To explicitly access Jax implementations use

from pymlg.jax import SE2

Currently, only SO3, SE3, and SE23 are implemented in C++, with the functions accepting and returning numpy arrays. They are also the default internal implementations when simply using from pymlg import SO3, SE3, SE23. For the JAX implementation, the return types will be jax.numpy arrays. All operations in the jax implementation can be JIT-compiled.

For all implementations (jax, numpy, C++), the user API is exactly the same! This means that by changing the import statement the example still works.

Note: functions which output "vectors", such as SE2.Log(T) all return a 2D numpy array with dimensions (n, 1).

Running Tests

If you use VS Code, you should be able to enable the VS Code testing feature using pytest. Otherwise, you can run tests from the command line when inside this folder using

pytest tests

Credit to UTIAS's STARS group

Some specific implementations came from the UTIAS STARS Lie group package.. We wanted a different API and variable ordering, which led to us making our own package. Eventually, this repo evolved to contain more groups, as well as Jax and C++ implementations.

pymlg's People

Contributors

angadbajwa avatar arturodcb avatar charlescossette avatar johnkjung avatar mitchellcohen3 avatar pdeco avatar shalabyma avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

pymlg's Issues

some errors in PyCharm

After installing the pymlg package in Pycharm, running standard_test.py will show that pymlg.cpp.impl does not exist in the wrapper.py file, with a detailed error message:
C:\Users\81956\AppData\Local\Microsoft\WindowsApps\python3.11.exe D:\pymlg\tests\standard_tests.py
Traceback (most recent call last):
File "D:\pymlg\tests\standard_tests.py", line 3, in
from pymlg import MatrixLieGroup
File "D:\pymlg\pymlg_init
.py", line 1, in
from .cpp import SO3
File "D:\pymlg\pymlg\cpp_init_.py", line 1, in
from .wrapper import SO3, SE3, SE23, SL3
File "D:\pymlg\pymlg\cpp\wrapper.py", line 6, in
from ._impl import SO3 as SO3cpp
ModuleNotFoundError: No module named 'pymlg.cpp._impl'
I hope the author can provide a solution, thank you very much!

Installation problem

Hello,

I am trying to install this library into my environment, and I having some problems.

First, I tried
pip install git+https://github.com/decargroup/pymlg,
and I got some errors.

I then tried to download this repo and, from the main folder, do
pip install -e.
as specified in the docs, but it also failed.

The messages of the errors are shown below.
Does anyone know how to fix this?

Thanks in advance

Error messages from pip + git

Collecting git+https://github.com/decargroup/pymlg
  Cloning https://github.com/decargroup/pymlg to c:\users\pablo.baez\appdata\local\temp\pip-req-build-3o6qmh8c
  Running command git clone --filter=blob:none --quiet https://github.com/decargroup/pymlg 'C:\Users\pablo.baez\AppData\Local\Temp\pip-req-build-3o6qmh8c'
  Resolved https://github.com/decargroup/pymlg to commit 4da2ecfa224fbe5a8fbcead54034c8c340ffffed
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: numpy>=1.20.0 in c:\users\pablo.baez\source\repos\pruebasenpython\pruebasenpython\pruebasbasicas\lib\site-packages (from pymlg==1.0.0) (1.23.5)
Requirement already satisfied: scipy>=1.7.1 in c:\users\pablo.baez\source\repos\pruebasenpython\pruebasenpython\pruebasbasicas\lib\site-packages (from pymlg==1.0.0) (1.10.1) 
Building wheels for collected packages: pymlg
  Building wheel for pymlg (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for pymlg (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [44 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build\lib.win-amd64-cpython-39
      creating build\lib.win-amd64-cpython-39\pymlg
      copying pymlg\__init__.py -> build\lib.win-amd64-cpython-39\pymlg
      creating build\lib.win-amd64-cpython-39\pymlg\cpp
      copying pymlg\cpp\wrapper.py -> build\lib.win-amd64-cpython-39\pymlg\cpp
      copying pymlg\cpp\__init__.py -> build\lib.win-amd64-cpython-39\pymlg\cpp
      creating build\lib.win-amd64-cpython-39\pymlg\jax
      copying pymlg\jax\base.py -> build\lib.win-amd64-cpython-39\pymlg\jax
      copying pymlg\jax\se2.py -> build\lib.win-amd64-cpython-39\pymlg\jax
      copying pymlg\jax\se23.py -> build\lib.win-amd64-cpython-39\pymlg\jax
      copying pymlg\jax\se3.py -> build\lib.win-amd64-cpython-39\pymlg\jax
      copying pymlg\jax\sl3.py -> build\lib.win-amd64-cpython-39\pymlg\jax
      copying pymlg\jax\so2.py -> build\lib.win-amd64-cpython-39\pymlg\jax
      copying pymlg\jax\so3.py -> build\lib.win-amd64-cpython-39\pymlg\jax
      copying pymlg\jax\__init__.py -> build\lib.win-amd64-cpython-39\pymlg\jax
      creating build\lib.win-amd64-cpython-39\pymlg\numpy
      copying pymlg\numpy\base.py -> build\lib.win-amd64-cpython-39\pymlg\numpy
      copying pymlg\numpy\se2.py -> build\lib.win-amd64-cpython-39\pymlg\numpy
      copying pymlg\numpy\se23.py -> build\lib.win-amd64-cpython-39\pymlg\numpy
      copying pymlg\numpy\se3.py -> build\lib.win-amd64-cpython-39\pymlg\numpy
      copying pymlg\numpy\sl3.py -> build\lib.win-amd64-cpython-39\pymlg\numpy
      copying pymlg\numpy\so2.py -> build\lib.win-amd64-cpython-39\pymlg\numpy
      copying pymlg\numpy\so3.py -> build\lib.win-amd64-cpython-39\pymlg\numpy
      copying pymlg\numpy\__init__.py -> build\lib.win-amd64-cpython-39\pymlg\numpy
      creating build\lib.win-amd64-cpython-39\pymlg\torch
      copying pymlg\torch\base.py -> build\lib.win-amd64-cpython-39\pymlg\torch
      copying pymlg\torch\so3.py -> build\lib.win-amd64-cpython-39\pymlg\torch
      copying pymlg\torch\__init__.py -> build\lib.win-amd64-cpython-39\pymlg\torch
      running build_ext
      building 'pymlg.cpp._impl' extension
      creating build\temp.win-amd64-cpython-39
      creating build\temp.win-amd64-cpython-39\Release
      creating build\temp.win-amd64-cpython-39\Release\pymlg
      creating build\temp.win-amd64-cpython-39\Release\pymlg\cpp
      "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -DVERSION_INFO=1.0.0 -Ieigen-3.3.7 -IC:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-zra_7_tv\overlay\Lib\site-packages\pybind11\include -IC:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-zra_7_tv\overlay\Lib\site-packages\pybind11\include -IC:\Users\pablo.baez\source\repos\PruebasEnPython\PruebasEnPython\PruebasBasicas\include "-IC:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\Include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\ATLMFC\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /EHsc /Tppymlg/cpp/bindings.cpp /Fobuild\temp.win-amd64-cpython-39\Release\pymlg/cpp/bindings.obj /std:c++latest /EHsc /bigobj
      bindings.cpp
      C:\Users\pablo.baez\AppData\Local\Temp\pip-req-build-3o6qmh8c\pymlg\cpp\base.h(11): warning C4305: 'inicializando': truncamiento de 'double' a 'const float'
      C:\Users\pablo.baez\AppData\Local\Temp\pip-req-build-3o6qmh8c\pymlg\cpp\so3.h(8): note: Vea la referencia a la creaci¢n de una instancia de clase plantilla "MatrixLieGroup<3,3>" que se est  compilando
      C:\Users\pablo.baez\AppData\Local\Temp\pip-req-build-3o6qmh8c\pymlg\cpp\so3.h(50): error C2065: 'M_PI': identificador no declarado
      error: command 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pymlg
Failed to build pymlg
ERROR: Could not build wheels for pymlg, which is required to install pyproject.toml-based projects

Error messages from downloading and pip install -e.

Installing build dependencies ... done
  Checking if build backend supports build_editable ... done
  Getting requirements to build editable ... done
  Preparing editable metadata (pyproject.toml) ... done
Requirement already satisfied: numpy>=1.20.0 in c:\users\pablo.baez\source\repos\pruebasenpython\pruebasenpython\pruebasbasicas\lib\site-packages (from pymlg==1.0.0) (1.23.5)
Requirement already satisfied: scipy>=1.7.1 in c:\users\pablo.baez\source\repos\pruebasenpython\pruebasenpython\pruebasbasicas\lib\site-packages (from pymlg==1.0.0) (1.10.1)
Building wheels for collected packages: pymlg
  Building editable for pymlg (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building editable for pymlg (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [100 lines of output]
      running editable_wheel
      creating C:\Users\pablo.baez\AppData\Local\Temp\pip-wheel-p1d8enxk\.tmp-63mt8fqq\pymlg.egg-info
      writing C:\Users\pablo.baez\AppData\Local\Temp\pip-wheel-p1d8enxk\.tmp-63mt8fqq\pymlg.egg-info\PKG-INFO
      writing dependency_links to C:\Users\pablo.baez\AppData\Local\Temp\pip-wheel-p1d8enxk\.tmp-63mt8fqq\pymlg.egg-info\dependency_links.txt
      writing requirements to C:\Users\pablo.baez\AppData\Local\Temp\pip-wheel-p1d8enxk\.tmp-63mt8fqq\pymlg.egg-info\requires.txt
      writing top-level names to C:\Users\pablo.baez\AppData\Local\Temp\pip-wheel-p1d8enxk\.tmp-63mt8fqq\pymlg.egg-info\top_level.txt
      writing manifest file 'C:\Users\pablo.baez\AppData\Local\Temp\pip-wheel-p1d8enxk\.tmp-63mt8fqq\pymlg.egg-info\SOURCES.txt'
      reading manifest file 'C:\Users\pablo.baez\AppData\Local\Temp\pip-wheel-p1d8enxk\.tmp-63mt8fqq\pymlg.egg-info\SOURCES.txt'
      adding license file 'LICENSE'
      writing manifest file 'C:\Users\pablo.baez\AppData\Local\Temp\pip-wheel-p1d8enxk\.tmp-63mt8fqq\pymlg.egg-info\SOURCES.txt'
      creating 'C:\Users\pablo.baez\AppData\Local\Temp\pip-wheel-p1d8enxk\.tmp-63mt8fqq\pymlg-1.0.0.dist-info'
      C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\wheel\bdist_wheel.py:108: RuntimeWarning: Config variable 'Py_DEBUG' is unset, Python ABI tag may be incorrect
        if get_flag("Py_DEBUG", hasattr(sys, "gettotalrefcount"), warn=(impl == "cp")):
      creating C:\Users\pablo.baez\AppData\Local\Temp\pip-wheel-p1d8enxk\.tmp-63mt8fqq\pymlg-1.0.0.dist-info\WHEEL
      running build_py
      running build_ext
      building 'pymlg.cpp._impl' extension
      creating C:\Users\PABLO~1.BAE\AppData\Local\Temp\tmpz8gnm6pr.build-temp\Release
      creating C:\Users\PABLO~1.BAE\AppData\Local\Temp\tmpz8gnm6pr.build-temp\Release\pymlg
      creating C:\Users\PABLO~1.BAE\AppData\Local\Temp\tmpz8gnm6pr.build-temp\Release\pymlg\cpp
      "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -DVERSION_INFO=1.0.0 -Ieigen-3.3.7 -IC:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\pybind11\include -IC:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\pybind11\include -IC:\Users\pablo.baez\source\repos\PruebasEnPython\PruebasEnPython\PruebasBasicas\include "-IC:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\Include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\ATLMFC\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /EHsc /Tppymlg/cpp/bindings.cpp /FoC:\Users\PABLO~1.BAE\AppData\Local\Temp\tmpz8gnm6pr.build-temp\Release\pymlg/cpp/bindings.obj /std:c++latest /EHsc /bigobj
      bindings.cpp
      C:\Users\pablo.baez\Downloads\pymlg-main\pymlg\cpp\base.h(11): warning C4305: 'inicializando': truncamiento de 'double' a 'const float'
      C:\Users\pablo.baez\Downloads\pymlg-main\pymlg\cpp\so3.h(8): note: Vea la referencia a la creaci¢n de una instancia de clase plantilla "MatrixLieGroup<3,3>" que se est  compilando
      C:\Users\pablo.baez\Downloads\pymlg-main\pymlg\cpp\so3.h(50): error C2065: 'M_PI': identificador no declarado
      Traceback (most recent call last):
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\_distutils\_msvccompiler.py", line 419, in compile
          self.spawn(args)
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\_distutils\_msvccompiler.py", line 517, in spawn
          return super().spawn(cmd, env=env)
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\_distutils\ccompiler.py", line 1041, in spawn
          spawn(cmd, dry_run=self.dry_run, **kwargs)
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\_distutils\spawn.py", line 70, in spawn
          raise DistutilsExecError(
      distutils.errors.DistutilsExecError: command 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
     
      During handling of the above exception, another exception occurred:
     
      Traceback (most recent call last):
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\command\editable_wheel.py", line 156, in run
          self._create_wheel_file(bdist_wheel)
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\command\editable_wheel.py", line 345, in _create_wheel_file
          files, mapping = self._run_build_commands(dist_name, unpacked, lib, tmp)
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\command\editable_wheel.py", line 268, in _run_build_commands
          self._run_build_subcommands()
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\command\editable_wheel.py", line 295, in _run_build_subcommands
          self.run_command(name)
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\_distutils\cmd.py", line 318, in run_command
          self.distribution.run_command(command)
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\dist.py", line 963, in run_command
          super().run_command(command)
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command
          cmd_obj.run()
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\command\build_ext.py", line 88, in run
          _build_ext.run(self)
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 345, in run
          self.build_extensions()
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\pybind11\setup_helpers.py", line 285, in build_extensions
          super().build_extensions()
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 467, in build_extensions
          self._build_extensions_serial()
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 493, in _build_extensions_serial
          self.build_extension(ext)
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\command\build_ext.py", line 249, in build_extension
          _build_ext.build_extension(self, ext)
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\_distutils\command\build_ext.py", line 548, in build_extension
          objects = self.compiler.compile(
        File "C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\_distutils\_msvccompiler.py", line 421, in compile
          raise CompileError(msg)
      distutils.errors.CompileError: command 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
      C:\Users\pablo.baez\AppData\Local\Temp\pip-build-env-5ikk1lm5\overlay\Lib\site-packages\setuptools\_distutils\dist.py:988: _DebuggingTips: Problem in editable installation.
      !!
     
              ********************************************************************************
              An error happened while installing `pymlg` in editable mode.
     
              The following steps are recommended to help debug this problem:
     
              - Try to install the project normally, without using the editable mode.
                Does the error still persist?
                (If it does, try fixing the problem before attempting the editable mode).
              - If you are using binary extensions, make sure you have all OS-level
                dependencies installed (e.g. compilers, toolchains, binary libraries, ...).
              - Try the latest version of setuptools (maybe the error was already fixed).
              - If you (or your project dependencies) are using any setuptools extension
                or customization, make sure they support the editable mode.
     
              After following the steps above, if the problem still persists and
              you think this is related to how setuptools handles editable installations,
              please submit a reproducible example
              (see https://stackoverflow.com/help/minimal-reproducible-example) to:
     
                  https://github.com/pypa/setuptools/issues
     
              See https://setuptools.pypa.io/en/latest/userguide/development_mode.html for details.
              ********************************************************************************
     
      !!
        cmd_obj.run()
      error: command 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building editable for pymlg
Failed to build pymlg
ERROR: Could not build wheels for pymlg, which is required to install pyproject.toml-based projects

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.