robbievanleeuwen / section-properties

Analysis of an arbitrary cross-section in python using the finite element method.
https://sectionproperties.rtfd.io
MIT License
400 stars 92 forks source link

Error installing triangle, additional requirement needed? #172

Closed mayermelhem closed 2 years ago

mayermelhem commented 2 years ago

Hi all,

I have previously used sectionproperties for my work computer, but now I am trying to install on a personal computer.

When I run pip install sectionproperties, the dependencies seem to work out okay, except for triangle. A copy-paste of error text below, but essentially it appears that Microsoft Visual C++ 14.0 or later is necessary. Please confirm if this is an additional requirement.

Building wheels for collected packages: triangle
  Building wheel for triangle (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: 'C:\Users\mayer\anaconda3\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\mayer\\AppData\\Local\\Temp\\pip-install-dj8p4n05\\triangle_8c0877f1f0a541788d4cc424ca6cd81a\\setup.py'"'"'; __file__='"'"'C:\\Users\\mayer\\AppData\\Local\\Temp\\pip-install-dj8p4n05\\triangle_8c0877f1f0a541788d4cc424ca6cd81a\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\mayer\AppData\Local\Temp\pip-wheel-2dmqd5ie'
       cwd: C:\Users\mayer\AppData\Local\Temp\pip-install-dj8p4n05\triangle_8c0877f1f0a541788d4cc424ca6cd81a\
  Complete output (85 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build\lib.win-amd64-3.9
  creating build\lib.win-amd64-3.9\triangle
  copying triangle\core1_run.py -> build\lib.win-amd64-3.9\triangle
  copying triangle\data.py -> build\lib.win-amd64-3.9\triangle
  copying triangle\plot.py -> build\lib.win-amd64-3.9\triangle
  copying triangle\tri.py -> build\lib.win-amd64-3.9\triangle
  copying triangle\version.py -> build\lib.win-amd64-3.9\triangle
  copying triangle\__init__.py -> build\lib.win-amd64-3.9\triangle
  creating build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\A.1.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\bbox.1.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\box.1.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\box.2.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\box.3.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\box.4.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\diamond_02_00009.1.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\diamond_02_00009.1.v.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\diamond_02_00009.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\dots.1.v.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\dots.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex.1.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex.2.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex2.1.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex2.2.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex3.1.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex3.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\ell.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\face.1.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\greenland.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\la.1.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\spiral.1.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\spiral.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\spiral.q.1.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\spiral.r.1.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\square_circle_hole.1.node -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\A.1.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\bbox.1.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\box.1.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\box.2.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\box.3.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\box.4.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\diamond_02_00009.1.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex.1.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex.2.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex2.1.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex2.2.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex3.1.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\ell.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\face.1.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\greenland.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\la.1.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\spiral.1.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\spiral.q.1.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\spiral.r.1.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\square_circle_hole.1.ele -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\A.1.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\A.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\box.1.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\box.2.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\box.3.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\box.4.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\box.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex.1.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex.2.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex2.1.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex2.2.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex2.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex3.1.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\double_hex3.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\face.1.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\face.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\la.1.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\la.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\square_circle_hole.poly -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\bbox.1.area -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\diamond_02_00009.1.v.edge -> build\lib.win-amd64-3.9\triangle\data
  copying triangle\data\dots.1.v.edge -> build\lib.win-amd64-3.9\triangle\data
  running build_ext
  building 'triangle.core' extension
  error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
  ----------------------------------------
  ERROR: Failed building wheel for triangle
  Running setup.py clean for triangle
Failed to build triangle
Installing collected packages: triangle, rhino-shapley-interop, pytest-check, cad-to-shapely, sectionproperties
    Running setup.py install for triangle ... error
    ERROR: Command errored out with exit status 1:
     command: 'C:\Users\mayer\anaconda3\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\mayer\\AppData\\Local\\Temp\\pip-install-dj8p4n05\\triangle_8c0877f1f0a541788d4cc424ca6cd81a\\setup.py'"'"'; __file__='"'"'C:\\Users\\mayer\\AppData\\Local\\Temp\\pip-install-dj8p4n05\\triangle_8c0877f1f0a541788d4cc424ca6cd81a\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\mayer\AppData\Local\Temp\pip-record-j4easdpz\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\Users\mayer\anaconda3\Include\triangle'
         cwd: C:\Users\mayer\AppData\Local\Temp\pip-install-dj8p4n05\triangle_8c0877f1f0a541788d4cc424ca6cd81a\
    Complete output (85 lines):
    running install
    running build
    running build_py
    creating build
    creating build\lib.win-amd64-3.9
    creating build\lib.win-amd64-3.9\triangle
    copying triangle\core1_run.py -> build\lib.win-amd64-3.9\triangle
    copying triangle\data.py -> build\lib.win-amd64-3.9\triangle
    copying triangle\plot.py -> build\lib.win-amd64-3.9\triangle
    copying triangle\tri.py -> build\lib.win-amd64-3.9\triangle
    copying triangle\version.py -> build\lib.win-amd64-3.9\triangle
    copying triangle\__init__.py -> build\lib.win-amd64-3.9\triangle
    creating build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\A.1.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\bbox.1.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\box.1.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\box.2.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\box.3.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\box.4.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\diamond_02_00009.1.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\diamond_02_00009.1.v.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\diamond_02_00009.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\dots.1.v.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\dots.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex.1.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex.2.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex2.1.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex2.2.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex3.1.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex3.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\ell.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\face.1.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\greenland.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\la.1.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\spiral.1.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\spiral.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\spiral.q.1.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\spiral.r.1.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\square_circle_hole.1.node -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\A.1.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\bbox.1.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\box.1.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\box.2.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\box.3.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\box.4.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\diamond_02_00009.1.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex.1.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex.2.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex2.1.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex2.2.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex3.1.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\ell.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\face.1.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\greenland.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\la.1.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\spiral.1.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\spiral.q.1.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\spiral.r.1.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\square_circle_hole.1.ele -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\A.1.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\A.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\box.1.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\box.2.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\box.3.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\box.4.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\box.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex.1.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex.2.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex2.1.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex2.2.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex2.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex3.1.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\double_hex3.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\face.1.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\face.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\la.1.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\la.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\square_circle_hole.poly -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\bbox.1.area -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\diamond_02_00009.1.v.edge -> build\lib.win-amd64-3.9\triangle\data
    copying triangle\data\dots.1.v.edge -> build\lib.win-amd64-3.9\triangle\data
    running build_ext
    building 'triangle.core' extension
    error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
    ----------------------------------------
ERROR: Command errored out with exit status 1: 'C:\Users\mayer\anaconda3\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\mayer\\AppData\\Local\\Temp\\pip-install-dj8p4n05\\triangle_8c0877f1f0a541788d4cc424ca6cd81a\\setup.py'"'"'; __file__='"'"'C:\\Users\\mayer\\AppData\\Local\\Temp\\pip-install-dj8p4n05\\triangle_8c0877f1f0a541788d4cc424ca6cd81a\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\mayer\AppData\Local\Temp\pip-record-j4easdpz\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\Users\mayer\anaconda3\Include\triangle' Check the logs for full command output.

Desktop

Spectre5 commented 2 years ago

What version of Python are you running? Pip should install a wheel from PyPi, if available for you platform. That said, it looks like there are no wheels for Python 3.9+ and PyPi for triangle.

@robbievanleeuwen we may need to see if we can add a PR to triangle to get wheels for never versions of python added...

Spectre5 commented 2 years ago

@mayermelhem please note also that the latest version of section properties on PyPi is version 2.0 which has man breaking changes compared to the 1.0 series. You can still use the older 1.0 series, if needed, by adding a <2 requirements with pip. Note that the 1.0 series depends on meshpy instead of triangle, but that it requires the free MS build libraries too.

mayermelhem commented 2 years ago

Ah sorry for not mentioning earlier @Spectre5. Running python 3.9.7. I had an older version of python in my work computer and the older sectionproperties too, but since then I have lost access to the work computer and am porting things over on a brand new person laptop. Version 2.0 has come out in perfect time. It is not a rush to get it on this computer yet.

robbievanleeuwen commented 2 years ago

Hi @mayermelhem I can reproduce this issue on my pc with anaconda and python 3.9.

When creating a virutal environment with python 3.7 & 3.8 I don't have this issue. For now I would suggest running sectionproperties on anaconda with windows, with either python 3.7 or 3.8 if possible, e.g.:

conda create --name pyenv python=3.8
conda activate pyenv
pip install sectionproperties

As @Spectre5 points out, it looks like there aren't any triangle wheels uploaded for python 3.9 yet, see drufat/triangle#57. There is currently a PR that appears to address this (drufat/triangle#58) so hopefully this will be remedied shortly!

robbievanleeuwen commented 2 years ago

In the meantime, @stefsmeets has kindly provided a wide variety of triangle wheels (up to python 3.10) here.

mayermelhem commented 2 years ago

Thanks so much for your quick response @Spectre5 and @robbievanleeuwen. I have downloaded the triangle wheel from @stefsmeets and we are working now! Looking forward to play around with version 2.0.

AnRuVi commented 2 years ago

Hi all,

I am a new user of section preperties and I have just had the same issue(got the same error when installing triangle). I then solved the installation issue by installing Microsoft C++ Build Tools. However, when I import triangle I get the following error:

`import triangle Traceback (most recent call last):

File "C:\Users\Angel\AppData\Local\Temp/ipykernel_5688/3401576549.py", line 1, in import triangle

File "C:\Users\Angel\Documents\WORK\test\triangle__init__.py", line 13, in from .tri import (

File "C:\Users\Angel\Documents\WORK\test\triangle\tri.py", line 1, in from .core import triang

ModuleNotFoundError: No module named 'triangle.core'`

I am using anaconda and python 3.9 so I have downloaded and installed triangle-20200804-cp39-cp39-win_amd64.whl but I still get the same error when importing the package. Have you ever experienced this issue?

Many thanks in advance!

robbievanleeuwen commented 2 years ago

Hi @AnRuVi, sorry I am away from home this weekend and don't have access to my PC.

Did you install the triangle wheel with pip?

I would try:

conda create --name pyenv python=3.9
conda activate pyenv
pip install triangle-20200804-cp39...
pip install sectionproperties

If this doesn't work, does it work in python 3.8?

AnRuVi commented 2 years ago

Hi @robbievanleeuwen , first of al thanks for your quick reply! I first tried that on python 3.9 but I got the same issue when importing. Then tried in python 3.8 and works fine now!

robbievanleeuwen commented 2 years ago

Fixed with drufat/triangle#58, I can no longer produce this issue on my PC with anaconda & python 3.9.