python stack frames not initialized (inspect.currentframe() fails)
- Lingua principale
- Julia
- Stelle
- 1.5k
- Fork
- 186
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
I was trying to use `PyCall` to import `ggplot` from https://github.com/yhat/ggplot/
The `qplot` function works fine.
```
ggplot.qplot([1,2],[3,4])
```
However, I can never get the `ggplot` function working. Specially, I can never create the `aes` class
```
julia> using PyCall
julia> @pyimport ggplot
julia> ggplot.aes
PyObject
julia> ggplot.aes(x="x",y="y")
ERROR: type: apply: expected Function, got PyObject
julia> pycall(ggplot.aes, PyObject, x="x",y="y")
ERROR: PyError (PyObject_Call)
AttributeError("'NoneType' object has no attribute 'f_locals'",)
File "/Users/Randy/.pyenv/versions/2.7.6/Python.framework/Versions/2.7/lib/python2.7/site-packages/ggplot/components/aes.py", line 68, in __init__
self.__eval_env__ = EvalEnvironment.capture(1)
File "/Users/Randy/.pyenv/versions/2.7.6/Python.framework/Versions/2.7/lib/python2.7/site-packages/patsy/eval.py", line 179, in capture
return cls([frame.f_locals, frame.f_globals],
in pyerr_check at /Users/Randy/.julia/v0.3/PyCall/src/exception.jl:58
in pycall at /Users/Randy/.julia/v0.3/PyCall/src/PyCall.jl:85
```
It seems that `ggplot` is calling `patsy` and checking some stack frame stuff.
---
Further study reveals that the root of the error is `.../patsy/eval.py` line 179
```
frame = inspect.currentframe()
try:
for i in xrange(depth + 1):
if frame is None:
raise ValueError, "call-stack is not that deep!"
frame = frame.f_back
return cls([frame.f_locals, frame.f_globals],
frame.f_code.co_flags & _ALL_FUTURE_FLAGS)
```
I have no idea what happens here...
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
Reproduce the failure by calling ggplot.aes through PyCall, then inspect patsy/eval.py at line 179 and the related PyCall paths in src/exception.jl and src/PyCall.jl. Determine why inspect.currentframe() has no usable frame in this call path; done means the aes constructor completes without the reported AttributeError.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- julia, python
- Ambito
- tooling
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 30/100