3-manifolds / SnapPy

SnapPy is a package for studying the topology and geometry of 3-manifolds, with a focus on hyperbolic structures. It is based on the SnapPea kernel written by Jeff Weeks.
https://snappy.computop.org/
84 stars 39 forks source link

Can't use snappy with Python3 and macOS #13

Closed R-Alexandre closed 1 year ago

R-Alexandre commented 4 years ago

Hi,

After trying a bit, I can't find a way to solve my issue.

I'm on macOS Catalina 10.15.3, and with Python 3.7.3

When I try to use snappy with Python2 it works ... but not with Python3. Apparently something is wrong with OpenGL but I can't say what exactly.

Here is my log in the terminal app.

Python 3.7.3 (default, Dec 13 2019, 19:58:14) 
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import snappy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/rph/Library/Python/3.7/lib/python/site-packages/snappy/__init__.py", line 7, in <module>
    from .SnapPy import (AbelianGroup, HolonomyGroup, FundamentalGroup,
  File "cython/core/basic.pyx", line 45, in init SnapPy
  File "/Users/rph/Library/Python/3.7/lib/python/site-packages/snappy/horoviewer.py", line 3, in <module>
    from .CyOpenGL import (HoroballScene, OpenGLOrthoWidget,
  File "opengl/CyOpenGL.pyx", line 38, in init CyOpenGL
AttributeError: type object 'CyOpenGL.vector3' has no attribute '__reduce_cython__'

Thanks for your help :)

unhyperbolic commented 4 years ago

It is a cython problem. We have a fix for it. It will be in the next SnapPy release.

On Thu, Mar 19, 2020 at 12:08 PM R-Alexandre notifications@github.com wrote:

Hi,

After trying a bit, I can't find a way to solve my issue.

I'm on macOS Catalina 10.15.3, and with Python 3.7.3

When I try to use snappy with Python2 it works ... but not with Python3. Apparently something is wrong with OpenGL but I can't say what exactly.

Here is my log in the terminal app.

Python 3.7.3 (default, Dec 13 2019, 19:58:14) [Clang 11.0.0 (clang-1100.0.33.17)] on darwin Type "help", "copyright", "credits" or "license" for more information.

import snappy Traceback (most recent call last): File "", line 1, in File "/Users/rph/Library/Python/3.7/lib/python/site-packages/snappy/init.py", line 7, in from .SnapPy import (AbelianGroup, HolonomyGroup, FundamentalGroup, File "cython/core/basic.pyx", line 45, in init SnapPy File "/Users/rph/Library/Python/3.7/lib/python/site-packages/snappy/horoviewer.py", line 3, in from .CyOpenGL import (HoroballScene, OpenGLOrthoWidget, File "opengl/CyOpenGL.pyx", line 38, in init CyOpenGL AttributeError: type object 'CyOpenGL.vector3' has no attribute '__reduce_cython__'

Thanks for your help :)

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/3-manifolds/SnapPy/issues/13, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJOP3U74ISCPPO7O65RDWDRIJURTANCNFSM4LPRYPZQ .

R-Alexandre commented 4 years ago

Hi,

Since then, the error has changed.

When I use the option prefer_rur I get a URL issue (only with python3)

Traceback (most recent call last):
  File "/Users/rph/Library/Python/3.7/lib/python/site-packages/snappy/ptolemy/ptolemyVariety.py", line 905, in _retrieve_url
    s = urlopen(url)
  File "/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 531, in open
    response = meth(req, response)
  File "/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 641, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 569, in error
    return self._call_chain(*args)
  File "/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 503, in _call_chain
    result = func(*args)
  File "/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "python/unipotent.py", line 39, in <module>
    unipotent_solutions = unipotent_solutions.UnipotentSolutions(MANIFOLD)
  File "/Users/rph/Desktop/pu-experiments/CRLimitSets/python/unipotent_solutions.py", line 39, in __init__
    verbose=False)
  File "/Users/rph/Library/Python/3.7/lib/python/site-packages/snappy/ptolemy/manifoldMethods.py", line 165, in retrieve_solutions
    for p in self ])
  File "/Users/rph/Library/Python/3.7/lib/python/site-packages/snappy/ptolemy/manifoldMethods.py", line 165, in <listcomp>
    for p in self ])
  File "/Users/rph/Library/Python/3.7/lib/python/site-packages/snappy/ptolemy/ptolemyVariety.py", line 558, in retrieve_solutions
    verbose = verbose)
  File "/Users/rph/Library/Python/3.7/lib/python/site-packages/snappy/ptolemy/ptolemyVariety.py", line 520, in _retrieve_solution_file
    return _retrieve_url(url)
  File "/Users/rph/Library/Python/3.7/lib/python/site-packages/snappy/ptolemy/ptolemyVariety.py", line 913, in _retrieve_url
    "%s" % (url, e))
RuntimeError: Problem connecting to server while retrieving http://ptolemy.unhyperbolic.org/data/pgl3/OrientableCuspedCensus/02_tetrahedra/m004__sl3_c0.rur: HTTP Error 404: Not Found

It works fine without prefer_rur as far as I can tell. But I should verify with the few manifolds that only have a RUR representation

edit: manifolds with only a RUR representation can't be used anymore

NathanDunfield commented 1 year ago

Closing this issue as the report is for an old version of SnapPy and we believe it is fixed in the current SnapPy 3.1. We will reopen the ticket if you are still having this problem.