Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

AttributeError("'numpy.ndarray' object has no attribute 'name'")

Abierto
#1,086 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Necesita aclaración
Estado de actividad
Estancado
Stack tecnológico
julia, numpy, python

Línea de trabajo

Reproduce la configuración reportada de Julia 1.11 y Python 3.12, comenzando con writer.addDetector(reg). Compara las llamadas basadas en pyimport con la ejecución dentro de la cápsula py"""...""" y, después, inspecciona pyg4ometry/gdml/Writer.py en addDetector, writePhysicalVolume y writeVectorVariable. Se considera terminado cuando se haya identificado si PyCall causa la incompatibilidad entre ndarray y object, y se haya documentado o corregido el comportamiento de compatibilidad.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

I intend to execute example at github page of pyg4ometry module https://github.com/g4edge/pyg4ometry.

import pyg4ometry as pg4
from g4edgetestdata import G4EdgeTestData

g4data = G4EdgeTestData()
# define a geometry registry
reg = pg4.geant4.Registry()

# build the world volume
world_s = pg4.geant4.solid.Orb("WorldAir", 1.5, reg, lunit="cm")
world_l = pg4.geant4.LogicalVolume(world_s, "G4_AIR", "WorldAir", reg)
reg.setWorld(world_l)

# import an STL file
reader = pg4.stl.Reader(g4data["stl/utah_teapot.stl"], registry=reg)
teapot_s = reader.getSolid()

# place the teapot in the world
teapot_l = pg4.geant4.LogicalVolume(teapot_s, "G4_Cu", "UtahTeapot", reg)
pg4.geant4.PhysicalVolume([0, 0, 0], [0, 0, 0], teapot_l, "UtahTeapot", world_l, reg)

# export to GDML file "geometry.gdml"
writer = pg4.gdml.Writer()
writer.addDetector(reg)
writer.write("./geometry.gdml")

# start an interactive VTK viewer instance
viewer = pg4.visualisation.VtkViewer()
viewer.addLogicalVolume(reg.getWorldVolume())
viewer.view()

For PyCall i create virtual environment with pyg4ometry and pybdsim installed. No ROOT usage is required. PyCall is then build with python executable from that environment.
I replace the first 3 lines with

pg4 = pyimport("pyg4ometry")
g4etd = pyimport("g4edgetestdata")
g4data = g4etd.G4EdgeTestData()

Executions breaks at line

 writer.addDetector(reg)

with

ERROR: PyError ($(Expr(:escape, :(ccall(#= /home/alpha/.julia/packages/PyCall/1gn3u/src/pyfncall.jl:43 =# @pysym(:PyObject_Call), PyPtr, (PyPtr, PyPtr, PyPtr), o, pyargsptr, kw))))) <class 'AttributeError'>
AttributeError("'numpy.ndarray' object has no attribute 'name'")
  File "/home/alpha/pythonenvs/paper2024c/lib/python3.12/site-packages/pyg4ometry/gdml/Writer.py", line 76, in addDetector
    self.writeLogicalVolume(logical)
  File "/home/alpha/pythonenvs/paper2024c/lib/python3.12/site-packages/pyg4ometry/gdml/Writer.py", line 381, in writeLogicalVolume
    dve = self.writePhysicalVolume(dv)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/alpha/pythonenvs/paper2024c/lib/python3.12/site-packages/pyg4ometry/gdml/Writer.py", line 429, in writePhysicalVolume
    self.writeVectorVariable(pvol, pv.rotation)
  File "/home/alpha/pythonenvs/paper2024c/lib/python3.12/site-packages/pyg4ometry/gdml/Writer.py", line 190, in writeVectorVariable
    if allow_ref and vv.name in self.registry.defineDict:
                     ^^^^^^^

Stacktrace:
  [1] pyerr_check
    @ ~/.julia/packages/PyCall/1gn3u/src/exception.jl:75 [inlined]
  [2] pyerr_check
    @ ~/.julia/packages/PyCall/1gn3u/src/exception.jl:79 [inlined]
  [3] _handle_error(msg::String)
    @ PyCall ~/.julia/packages/PyCall/1gn3u/src/exception.jl:96
  [4] macro expansion
    @ ~/.julia/packages/PyCall/1gn3u/src/exception.jl:110 [inlined]
  [5] #107
    @ ~/.julia/packages/PyCall/1gn3u/src/pyfncall.jl:43 [inlined]
  [6] disable_sigint
    @ ./c.jl:167 [inlined]
  [7] __pycall!
    @ ~/.julia/packages/PyCall/1gn3u/src/pyfncall.jl:42 [inlined]
  [8] _pycall!(ret::PyObject, o::PyObject, args::Tuple{PyObject}, nargs::Int64, kw::Ptr{Nothing})
    @ PyCall ~/.julia/packages/PyCall/1gn3u/src/pyfncall.jl:29
  [9] _pycall!(ret::PyObject, o::PyObject, args::Tuple{PyObject}, kwargs::@Kwargs{})
    @ PyCall ~/.julia/packages/PyCall/1gn3u/src/pyfncall.jl:11
 [10] (::PyObject)(::PyObject, ::Vararg{Any}; kwargs::@Kwargs{})
    @ PyCall ~/.julia/packages/PyCall/1gn3u/src/pyfncall.jl:86
 [11] top-level scope
    @ ~/modeling/Paper2024c/Calibration/Calibration.jl:89

When Python code is executed in py""" """ capsule, it executes without errors.

Julia Version 1.11.0
Commit 501a4f25c2 (2024-10-07 11:40 UTC)
Build Info:

    Note: This is an unofficial build, please report bugs to the project
    responsible for this build and not to the Julia project unless you can
    reproduce the issue using official builds available at https://julialang.org/downloads

Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 128 × Intel(R) Xeon(R) Gold 6338 CPU @ 2.00GHz
  WORD_SIZE: 64
  LLVM: libLLVM-16.0.6 (ORCJIT, icelake-server)
Threads: 64 default, 0 interactive, 32 GC (on 128 virtual cores)
Environment:
  LD_LIBRARY_PATH = 
  JULIA_EDITOR = code
  JULIA_NUM_THREADS = 64
Lenguaje dominante
Julia
Estrellas
1.5k
Forks
186
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de JuliaPy/PyCall.jl

Todos los issues de JuliaPy/PyCall.jl

Issues similares

Más issues de Julia

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.