Hi there,

Since 8.2.rc0 (the update to cython 0.28.1) I'm having trouble using 
pyximport.  Here is a minimal non working example:

######## minimal.py ############
import pyximport; pyximport.install();
from minimal_pyx import minimal_fun
######## end minimal.py ############

######## minimal_pyx.pyx ############
from sage.misc.cachefunc        import cached_method

def minimal_fun():
    print("hi")
######## end minimal_pyx.pyx ############

Running this with "sage minimal.py" fails as reproduced below.

It seems that I should somehow set the compile_time_env variable 
'PY_VERSION_HEX', and set it to sys.hexversion.  I don't know how to do 
that (especially not when using pyximport), and I'm puzzled because I would 
have thought that dict_del_by_value.pyx is already compiled...

Thanks for any hints or workarounds!

Martin

martin@Martin-Laptop:~/test$ sage minimal.py 


Error compiling Cython file:
------------------------------------------------------------
...

cdef del_dictitem_by_exact_value(PyDictObject *mp, PyObject *value, 
Py_hash_t hash)

#This is for compatibility: this routine is available in Py3 and we
#implement it ourselves in Py2.
IF PY_VERSION_HEX<=0x02ffffff:
  ^
------------------------------------------------------------

/home/martin/sage-develop/local/lib/python2.7/site-packages/sage/cpython/dict_del_by_value.pxd:9:3:
 
Compile-time name 'PY_VERSION_HEX' not defined


Error compiling Cython file:
------------------------------------------------------------
...
        #in the underlying dictionary, we have stored a KeyedRef r
        #under a key k. The attribute r.key is the hash of k.
        if D._guard_level:
            D._pending_removals.append(r)
        else:
            del_dictitem_by_exact_value(<PyDictObject *>D, <PyObject *>r, 
r.key)
           ^
------------------------------------------------------------

/home/martin/sage-develop/local/lib/python2.7/site-packages/sage/misc/weak_dict.pyx:213:12:
 
undeclared name not builtin: del_dictitem_by_exact_value

Error compiling Cython file:
------------------------------------------------------------
...
        #in the underlying dictionary, we have stored a KeyedRef r
        #under a key k. The attribute r.key is the hash of k.
        if D._guard_level:
            D._pending_removals.append(r)
        else:
            del_dictitem_by_exact_value(<PyDictObject *>D, <PyObject *>r, 
r.key)
                                        ^
------------------------------------------------------------

/home/martin/sage-develop/local/lib/python2.7/site-packages/sage/misc/weak_dict.pyx:213:41:
 
'PyDictObject' is not a type identifier

Error compiling Cython file:
------------------------------------------------------------
...
        #in the underlying dictionary, we have stored a KeyedRef r
        #under a key k. The attribute r.key is the hash of k.
        if D._guard_level:
            D._pending_removals.append(r)
        else:
            del_dictitem_by_exact_value(<PyDictObject *>D, <PyObject *>r, 
r.key)
                                                          ^
------------------------------------------------------------

/home/martin/sage-develop/local/lib/python2.7/site-packages/sage/misc/weak_dict.pyx:213:59:
 
Cannot convert 'PyObject *' to Python object

Error compiling Cython file:
------------------------------------------------------------
...
            Traceback (most recent call last):
            ...
            TypeError: mutable matrices are unhashable

        """
        cdef PyObject* wr = PyDict_GetItemWithError(self, k)
                           ^
------------------------------------------------------------

/home/martin/sage-develop/local/lib/python2.7/site-packages/sage/misc/weak_dict.pyx:466:28:
 
undeclared name not builtin: PyDict_GetItemWithError

Error compiling Cython file:
------------------------------------------------------------
...
            Traceback (most recent call last):
            ...
            TypeError: mutable matrices are unhashable

        """
        cdef PyObject* wr = PyDict_GetItemWithError(self, k)
                                                  ^
------------------------------------------------------------

/home/martin/sage-develop/local/lib/python2.7/site-packages/sage/misc/weak_dict.pyx:466:51:
 
Cannot convert Python object to 'PyObject *'

Error compiling Cython file:
------------------------------------------------------------
...
            Traceback (most recent call last):
            ...
            TypeError: mutable matrices are unhashable

        """
        cdef PyObject* wr = PyDict_GetItemWithError(self, k)
            ^
------------------------------------------------------------

/home/martin/sage-develop/local/lib/python2.7/site-packages/sage/misc/weak_dict.pyx:466:13:
 
Storing unsafe C derivative of temporary Python reference

Error compiling Cython file:
------------------------------------------------------------
...
            Traceback (most recent call last):
            ...
            TypeError: mutable matrices are unhashable

        """
        cdef PyObject* wr = PyDict_GetItemWithError(self, k)
                                                  ^
------------------------------------------------------------

/home/martin/sage-develop/local/lib/python2.7/site-packages/sage/misc/weak_dict.pyx:578:51:
 
Cannot convert Python object to 'PyObject *'

Error compiling Cython file:
------------------------------------------------------------
...
            Traceback (most recent call last):
            ...
            TypeError: mutable matrices are unhashable

        """
        cdef PyObject* wr = PyDict_GetItemWithError(self, k)
            ^
------------------------------------------------------------

/home/martin/sage-develop/local/lib/python2.7/site-packages/sage/misc/weak_dict.pyx:578:13:
 
Storing unsafe C derivative of temporary Python reference

Error compiling Cython file:
------------------------------------------------------------
...
            Traceback (most recent call last):
            ...
            TypeError: mutable matrices are unhashable

        """
        cdef PyObject * wr = PyDict_GetItemWithError(self, k)
                                                   ^
------------------------------------------------------------

/home/martin/sage-develop/local/lib/python2.7/site-packages/sage/misc/weak_dict.pyx:654:52:
 
Cannot convert Python object to 'PyObject *'

Error compiling Cython file:
------------------------------------------------------------
...
            Traceback (most recent call last):
            ...
            TypeError: mutable matrices are unhashable

        """
        cdef PyObject * wr = PyDict_GetItemWithError(self, k)
            ^
------------------------------------------------------------

/home/martin/sage-develop/local/lib/python2.7/site-packages/sage/misc/weak_dict.pyx:654:13:
 
Storing unsafe C derivative of temporary Python reference

Error compiling Cython file:
------------------------------------------------------------
...
            Traceback (most recent call last):
            ...
            TypeError: mutable matrices are unhashable

        """
        cdef PyObject* wr = PyDict_GetItemWithError(self, k)
                                                  ^
------------------------------------------------------------

/home/martin/sage-develop/local/lib/python2.7/site-packages/sage/misc/weak_dict.pyx:694:51:
 
Cannot convert Python object to 'PyObject *'

Error compiling Cython file:
------------------------------------------------------------
...
            Traceback (most recent call last):
            ...
            TypeError: mutable matrices are unhashable

        """
        cdef PyObject* wr = PyDict_GetItemWithError(self, k)
            ^
------------------------------------------------------------

/home/martin/sage-develop/local/lib/python2.7/site-packages/sage/misc/weak_dict.pyx:694:13:
 
Storing unsafe C derivative of temporary Python reference

Error compiling Cython file:
------------------------------------------------------------
...
            Traceback (most recent call last):
            ...
            TypeError: mutable matrices are unhashable

        """
        cdef PyObject* wr = PyDict_GetItemWithError(self, k)
                                                  ^
------------------------------------------------------------

/home/martin/sage-develop/local/lib/python2.7/site-packages/sage/misc/weak_dict.pyx:738:51:
 
Cannot convert Python object to 'PyObject *'

Error compiling Cython file:
------------------------------------------------------------
...
            Traceback (most recent call last):
            ...
            TypeError: mutable matrices are unhashable

        """
        cdef PyObject* wr = PyDict_GetItemWithError(self, k)
            ^
------------------------------------------------------------

/home/martin/sage-develop/local/lib/python2.7/site-packages/sage/misc/weak_dict.pyx:738:13:
 
Storing unsafe C derivative of temporary Python reference
/home/martin/.pyxbld/temp.linux-x86_64-2.7/pyrex/sage/misc/weak_dict.c:1:2: 
error: #error Do not use this file, it is the result of a failed Cython 
compilation.
 #error Do not use this file, it is the result of a failed Cython 
compilation.
  ^~~~~
Traceback (most recent call last):
  File "minimal.py", line 2, in <module>
    from minimal_pyx import minimal_fun
  File 
"/home/martin/sage-develop/local/lib/python2.7/site-packages/pyximport/pyximport.py",
 
line 458, in load_module
    language_level=self.language_level)
  File 
"/home/martin/sage-develop/local/lib/python2.7/site-packages/pyximport/pyximport.py",
 
line 233, in load_module
    exec("raise exc, None, tb", {'exc': exc, 'tb': tb})
  File 
"/home/martin/sage-develop/local/lib/python2.7/site-packages/pyximport/pyximport.py",
 
line 216, in load_module
    mod = imp.load_dynamic(name, so_path)
  File "minimal_pyx.pyx", line 1, in init minimal_pyx
    from sage.misc.cachefunc        import cached_method
  File 
"/home/martin/sage-develop/local/lib/python2.7/site-packages/pyximport/pyximport.py",
 
line 458, in load_module
    language_level=self.language_level)
  File 
"/home/martin/sage-develop/local/lib/python2.7/site-packages/pyximport/pyximport.py",
 
line 233, in load_module
    exec("raise exc, None, tb", {'exc': exc, 'tb': tb})
  File 
"/home/martin/sage-develop/local/lib/python2.7/site-packages/pyximport/pyximport.py",
 
line 216, in load_module
    mod = imp.load_dynamic(name, so_path)
  File "weak_dict.pxd", line 1, in init sage.misc.cachefunc
  File 
"/home/martin/sage-develop/local/lib/python2.7/site-packages/pyximport/pyximport.py",
 
line 458, in load_module
    language_level=self.language_level)
  File 
"/home/martin/sage-develop/local/lib/python2.7/site-packages/pyximport/pyximport.py",
 
line 233, in load_module
    exec("raise exc, None, tb", {'exc': exc, 'tb': tb})
  File 
"/home/martin/sage-develop/local/lib/python2.7/site-packages/pyximport/pyximport.py",
 
line 215, in load_module
    inplace=build_inplace, language_level=language_level)
  File 
"/home/martin/sage-develop/local/lib/python2.7/site-packages/pyximport/pyximport.py",
 
line 191, in build_module
    reload_support=pyxargs.reload_support)
  File 
"/home/martin/sage-develop/local/lib/python2.7/site-packages/pyximport/pyxbuild.py",
 
line 102, in pyx_to_dll
    dist.run_commands()
  File "/home/martin/sage-develop/local/lib/python2.7/distutils/dist.py", 
line 953, in run_commands
    self.run_command(cmd)
  File "/home/martin/sage-develop/local/lib/python2.7/distutils/dist.py", 
line 972, in run_command
    cmd_obj.run()
  File 
"/home/martin/sage-develop/local/lib/python2.7/site-packages/Cython/Distutils/old_build_ext.py",
 
line 186, in run
    _build_ext.build_ext.run(self)
  File 
"/home/martin/sage-develop/local/lib/python2.7/distutils/command/build_ext.py", 
line 340, in run
    self.build_extensions()
  File 
"/home/martin/sage-develop/local/lib/python2.7/site-packages/Cython/Distutils/old_build_ext.py",
 
line 194, in build_extensions
    self.build_extension(ext)
  File 
"/home/martin/sage-develop/local/lib/python2.7/distutils/command/build_ext.py", 
line 499, in build_extension
    depends=ext.depends)
  File 
"/home/martin/sage-develop/local/lib/python2.7/distutils/ccompiler.py", 
line 574, in compile
    self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
  File 
"/home/martin/sage-develop/local/lib/python2.7/distutils/unixccompiler.py", 
line 126, in _compile
    raise CompileError, msg
ImportError: Building module minimal_pyx failed: ['ImportError: Building 
module sage.misc.cachefunc failed: [\'ImportError: Building module 
sage.misc.weak_dict failed: ["CompileError: command \\\'gcc\\\' failed with 
exit status 1\\\\n"]\\n\']\n']

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to