drufat / triangle

Python bindings to the triangle library
GNU Lesser General Public License v3.0
230 stars 53 forks source link

Triangle won't compile.. "error: triangle/core.c: No such file or directory" #12

Closed federicohyo closed 7 years ago

federicohyo commented 8 years ago

Hi there,

I just downloaded the git repository and tried to install it. However I am experiencing the following problem. Any suggestions?

federico@zfractal:~/Downloads/triangle$ pwd /home/federico/Downloads/triangle federico@zfractal:~/Downloads/triangle$ ls build c CHEATSHEET doc MANIFEST.in README.rst release.sh setup.py triangle triangle.egg-info upload_docs.sh federico@zfractal:~/Downloads/triangle$ sudo python setup.py install running install running bdist_egg running egg_info writing requirements to triangle.egg-info/requires.txt writing triangle.egg-info/PKG-INFO writing top-level names to triangle.egg-info/top_level.txt writing dependency_links to triangle.egg-info/dependency_links.txt reading manifest file 'triangle.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'triangle.egg-info/SOURCES.txt' installing library code to build/bdist.linux-x86_64/egg running install_lib running build_py running build_ext pyrexc triangle/core.pyx --> triangle/core.c /home/federico/Downloads/triangle/triangle/core.pyx:5:35: Expected an identifier or literal building 'triangle.core' extension x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DVOID=int -DREAL=double -DNO_TIMER=1 -DTRILIBRARY=1 -DANSI_DECLARATORS=1 -Ic -I/usr/include/python2.7 -c c/triangle.c -o build/temp.linux-x86_64-2.7/c/triangle.o c/triangle.c:3267:6: warning: function declaration isn’t a prototype [-Wstrict-prototypes] void internalerror() ^ c/triangle.c:4886:6: warning: function declaration isn’t a prototype [-Wstrict-prototypes] void exactinit() ^ c/triangle.c: In function ‘segmentintersection’: c/triangle.c:11707:28: warning: variable ‘collinear’ set but not used [-Wunused-but-set-variable] enum finddirectionresult collinear; ^ c/triangle.c: In function ‘tallyencs’: c/triangle.c:13184:7: warning: variable ‘dummy’ set but not used [-Wunused-but-set-variable] int dummy; ^ c/triangle.c: At top level: c/triangle.c:13206:6: warning: function declaration isn’t a prototype [-Wstrict-prototypes] void precisionerror() ^ c/triangle.c: In function ‘splitencsegs’: c/triangle.c:13257:7: warning: variable ‘dummy’ set but not used [-Wunused-but-set-variable] int dummy; ^ x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DVOID=int -DREAL=double -DNO_TIMER=1 -DTRILIBRARY=1 -DANSI_DECLARATORS=1 -Ic -I/usr/include/python2.7 -c triangle/core.c -o build/temp.linux-x86_64-2.7/triangle/core.o x86_64-linux-gnu-gcc: error: triangle/core.c: No such file or directory x86_64-linux-gnu-gcc: fatal error: no input files compilation terminated. error: command 'x86_64-linux-gnu-gcc' failed with exit status 4

drufat commented 8 years ago

For some reason on your system triangle/core.pyx does not get converted to triangle/core.c. Do you have Cython installed?

tfabbri commented 8 years ago

I think the fix that I posted should work also in this case.

LonelyDeer commented 8 years ago

Hello, @drufat. I have the same error. Here is my listing.

running install running bdist_egg running egg_info writing requirements to triangle.egg-info/requires.txt writing triangle.egg-info/PKG-INFO writing top-level names to triangle.egg-info/top_level.txt writing dependency_links to triangle.egg-info/dependency_links.txt reading manifest file 'triangle.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'triangle.egg-info/SOURCES.txt' installing library code to build/bdist.linux-x86_64/egg running install_lib running build_py running build_ext pyrexc triangle/core.pyx --> triangle/core.c /home/lira/Загрузки/triangle-master/triangle/core.pyx:5:35: Expected an identifier or literal building 'triangle.core' extension x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DVOID=int -DREAL=double -DNO_TIMER=1 -DTRILIBRARY=1 -DANSI_DECLARATORS=1 -Ic -I/usr/include/python2.7 -c c/triangle.c -o build/temp.linux-x86_64-2.7/c/triangle.o c/triangle.c:3267:6: warning: function declaration isn’t a prototype [-Wstrict-prototypes] void internalerror() ^ c/triangle.c:4886:6: warning: function declaration isn’t a prototype [-Wstrict-prototypes] void exactinit() ^ c/triangle.c: In function ‘segmentintersection’: c/triangle.c:11707:28: warning: variable ‘collinear’ set but not used [-Wunused-but-set-variable] enum finddirectionresult collinear; ^ c/triangle.c: In function ‘tallyencs’: c/triangle.c:13184:7: warning: variable ‘dummy’ set but not used [-Wunused-but-set-variable] int dummy; ^ c/triangle.c: At top level: c/triangle.c:13206:6: warning: function declaration isn’t a prototype [-Wstrict-prototypes] void precisionerror() ^ c/triangle.c: In function ‘splitencsegs’: c/triangle.c:13257:7: warning: variable ‘dummy’ set but not used [-Wunused-but-set-variable] int dummy; ^ x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DVOID=int -DREAL=double -DNO_TIMER=1 -DTRILIBRARY=1 -DANSI_DECLARATORS=1 -Ic -I/usr/include/python2.7 -c triangle/core.c -o build/temp.linux-x86_64-2.7/triangle/core.o x86_64-linux-gnu-gcc: error: triangle/core.c: Нет такого файла или каталога x86_64-linux-gnu-gcc: fatal error: no input files compilation terminated. error: command 'x86_64-linux-gnu-gcc' failed with exit status 4

I've installed (in order of errors that came in during installation): setuptools python-dev Cython 0.2 python-pyrex

Linux Mint 17.2

UPD. I've find an one half of an answer. I've deleted python-pyrex (think, Cython and Pyrex came into conflict, maybe) and now I have:

running install running bdist_egg running egg_info writing requirements to triangle.egg-info/requires.txt writing triangle.egg-info/PKG-INFO writing top-level names to triangle.egg-info/top_level.txt writing dependency_links to triangle.egg-info/dependency_links.txt reading manifest file 'triangle.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'triangle.egg-info/SOURCES.txt' installing library code to build/bdist.linux-x86_64/egg running install_lib running build_py running build_ext building 'triangle.core' extension error: unknown file type '.pyx' (from 'triangle/core.pyx')

Now I'm trying a solution from @tfabbri.

UPD2 It doesn't work. I've installed cython - 0.24 then, in setup.py I've changed setup_requires=[ 'setuptools>=18.0', 'Cython>=**0.24**' ], install_requires=[ 'numpy>=1.7.0', 'Cython>=**0.24**' ], What can i do now? error: unknown file type '.pyx' (from 'triangle/core.pyx')

UPD3 I've deleted string 'triangle/core.pyx' from setup.py

ext_modules=[ Extension('triangle.core', [ 'c/triangle.c', 'triangle/core.pyx' ], include_dirs=['c'], define_macros=define_macros) ]

then - no errors, I've deleted package by pip and then I've installed it again with 'triangle/core.pyx'.

And it works!

running install running bdist_egg running egg_info writing requirements to triangle.egg-info/requires.txt writing triangle.egg-info/PKG-INFO writing top-level names to triangle.egg-info/top_level.txt writing dependency_links to triangle.egg-info/dependency_links.txt reading manifest file 'triangle.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'triangle.egg-info/SOURCES.txt' installing library code to build/bdist.linux-x86_64/egg running install_lib running build_py running build_ext creating build/bdist.linux-x86_64/egg creating build/bdist.linux-x86_64/egg/triangle copying build/lib.linux-x86_64-2.7/triangle/c_triangle.pxd -> build/bdist.linux-x86_64/egg/triangle copying build/lib.linux-x86_64-2.7/triangle/init.py -> build/bdist.linux-x86_64/egg/triangle creating build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/bbox.1.area -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/box.3.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/face.1.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/diamond_02_00009.1.v.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/box.1.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/box.4.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/diamond_02_00009.1.v.edge -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/A.1.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/face.1.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/square_circle_hole.1.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/box.2.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/face.1.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/ell.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/box.3.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/dots.1.v.edge -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/box.2.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/box.1.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/dots.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/diamond_02_00009.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex2.1.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex2.2.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex2.1.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/box.1.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex.1.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/diamond_02_00009.1.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex2.1.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/box.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/greenland.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/bbox.1.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/box.2.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/diamond_02_00009.1.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/A.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex2.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/la.1.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex3.1.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/A.1.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/spiral.q.1.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/la.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex3.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex.1.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/la.1.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex3.1.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/spiral.r.1.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex3.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/A.1.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/ell.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex3.1.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex.2.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/dots.1.v.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/bbox.1.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/face.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/spiral.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/box.4.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex.2.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/box.4.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex2.2.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex.2.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex.1.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/spiral.1.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/spiral.q.1.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/greenland.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/square_circle_hole.1.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/double_hex2.2.ele -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/square_circle_hole.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/spiral.r.1.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/spiral.1.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/la.1.node -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/data/box.3.poly -> build/bdist.linux-x86_64/egg/triangle/data copying build/lib.linux-x86_64-2.7/triangle/plot.py -> build/bdist.linux-x86_64/egg/triangle copying build/lib.linux-x86_64-2.7/triangle/version.py -> build/bdist.linux-x86_64/egg/triangle copying build/lib.linux-x86_64-2.7/triangle/core.so -> build/bdist.linux-x86_64/egg/triangle byte-compiling build/bdist.linux-x86_64/egg/triangle/init.py to init.pyc byte-compiling build/bdist.linux-x86_64/egg/triangle/plot.py to plot.pyc byte-compiling build/bdist.linux-x86_64/egg/triangle/version.py to version.pyc creating stub loader for triangle/core.so byte-compiling build/bdist.linux-x86_64/egg/triangle/core.py to core.pyc creating build/bdist.linux-x86_64/egg/EGG-INFO copying triangle.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO copying triangle.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying triangle.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying triangle.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying triangle.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO writing build/bdist.linux-x86_64/egg/EGG-INFO/native_libs.txt zip_safe flag not set; analyzing archive contents... triangle.init: module references file creating 'dist/triangle-20160203-py2.7-linux-x86_64.egg' and adding 'build/bdist.linux-x86_64/egg' to it removing 'build/bdist.linux-x86_64/egg' (and everything under it) Processing triangle-20160203-py2.7-linux-x86_64.egg creating /usr/local/lib/python2.7/dist-packages/triangle-20160203-py2.7-linux-x86_64.egg Extracting triangle-20160203-py2.7-linux-x86_64.egg to /usr/local/lib/python2.7/dist-packages Adding triangle 20160203 to easy-install.pth file

Installed /usr/local/lib/python2.7/dist-packages/triangle-20160203-py2.7-linux-x86_64.egg Processing dependencies for triangle==20160203 Searching for Cython==0.24 Best match: Cython 0.24 Adding Cython 0.24 to easy-install.pth file Installing cython script to /usr/local/bin Installing cygdb script to /usr/local/bin Installing cythonize script to /usr/local/bin

Using /usr/local/lib/python2.7/dist-packages Searching for numpy==1.8.2 Best match: numpy 1.8.2 numpy 1.8.2 is already the active version in easy-install.pth

Using /usr/lib/python2.7/dist-packages Finished processing dependencies for triangle==20160203

Buuuuuuuuuuuuuuuuuuuuuut!

It doesn't works in python. When I write import triangle in python interpreter I get: >>> import triangle Traceback (most recent call last): File "<stdin>", line 1, in <module> File "triangle/__init__.py", line 4, in <module> import triangle.core as core ImportError: No module named core

JohnCC330 commented 8 years ago

Basically, I have the same problem. The original .tar.gz contains a triangle/core.pyx which causes the message: error: unknown file type '.pyx' (from 'triangle/core.pyx') I thought Pyrex wasn't necessary for the project (I read it was replaced by Cython). In also tried installing Pyrex (0.9.9), but then I get the following error:

...
c/triangle.c:13257:7: warning: variable 'dummy' set but not used [-Wunused-but-set-variable]
   int dummy;
       ^
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DVOID=int -DREAL=double -DNO_TIMER=1 -DTRILIBRARY=1 -DANSI_DECLARATORS=1 -Ic -I/usr/include/python2.7 -c triangle/core.c -o build/temp.linux-x86_64-2.7/triangle/core.o
gcc: error: triangle/core.c: No such file or directory
gcc: fatal error: no input files
compilation terminated.
error: command 'gcc' failed with exit status 1

Indeed, there is no triangle/core.c

Finally, I tried to simply run pip install triangle, as advised in http://blancosilva.github.io/post/2014/10/28/Computational-Geometry-in-Python.html, but gives the same error as the previous try.

sinback commented 8 years ago

I was also having the issue described by the first two complainants (after getting Cython version 0.24) on Ubuntu 14.04. I managed to resolve it by uninstalling my system's setuptools (version 3.3) and getting the latest version of setuptools with pip (version 23.0) (what a difference, jeez!!) Since Ubuntu's pip depends on python-setuptools, I also had to reinstall pip not through apt but through the maintainers' own installation script:

sudo apt-get remove python-setuptools
wget https://bootstrap.pypa.io/get-pip.py
sudo -H pip install -U pip setuptools

Now, the following error when installing triangle was encountered:

Traceback (most recent call last):
  File "setup.py", line 1, in <module>
    from setuptools import setup, Extension
  File "/usr/local/lib/python2.7/dist-packages/setuptools/__init__.py", line 11, in <module>
    from setuptools.extern.six.moves import filterfalse, map
  File "/usr/local/lib/python2.7/dist-packages/setuptools/extern/__init__.py", line 1, in <module>
    from pkg_resources.extern import VendorImporter
ImportError: No module named extern

so after some googling, I also did:

sudo apt-get purge python-pkg-resources
sudo apt-get -f install

(the second step didn't seem necessary in my case, but it can't hurt)

Now, I can install triangle both by cloning the git repo and running python setup.py install and by using sudo -H pip install triangle.

LonelyDeer commented 8 years ago

@sinback, thank you very much! It really works. But can you explain it to me? What did we do?

  1. sudo apt-get remove python-setuptools ok, we just removed setuptools (and pip too, look item 3)
  2. wget https://bootstrap.pypa.io/get-pip.py we said "Hey, Linux - loook there" - we have inserted new repository
  3. sudo -H pip install -U pip setuptools I don't what is -H and "-U". Than pip install is a command to use pip to install a package pip setuptools. Is here a mistake? Because this string call an error like "unknown command pip". I'have installed pip by python get-pip.py with file get-pip.py from this site. Then i've did sudo apt-get purge python-pkg-resources sudo apt-get -f install sudo -H pip install triangle

And all works. Thank you @sinback. Thank you @drufat.