AttributeError("'numpy.ndarray' object has no attribute 'name'")
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
- Type d'issue
- Bug
- Clarté
- À clarifier
- Activité
- À l'abandon
- Domaine
- developer-experience
Piste de recherche
Reproduisez la configuration signalée de Julia 1.11 et Python 3.12, en commençant par writer.addDetector(reg). Comparez les appels basés sur pyimport avec l’exécution à l’intérieur de la capsule py"""...""", puis examinez pyg4ometry/gdml/Writer.py au niveau de addDetector, writePhysicalVolume et writeVectorVariable. Le travail est terminé lorsqu’il est établi si PyCall est à l’origine de l’incompatibilité entre ndarray et object, et que le comportement de compatibilité est documenté ou corrigé.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- Julia
- Étoiles
- 1.5k
- Forks
- 186
- Merge moyen
- 7 j 10 h
- PR mergées (30 j)
- 2
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de JuliaPy/PyCall.jl
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 20/100
Toutes les issues de JuliaPy/PyCall.jl
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
-
bignums
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
JuliaNLSolvers/NLsolve.jl#319 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100