Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

Error accessing attribute of Python object from Julia.

未關閉
#598 1 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

維護者通常 1 天內回覆

還沒有人認領這個 Issue。

評估

難度
3/5
預估耗時
1-2 天
新手友好度
45/100
Issue 類型
缺陷
描述清晰度
基本清楚
活躍度
停滯
技術堆疊
python
領域
backend

研究方向

使用提供的 Julia 與 CondaPkg 版本重現 qiskit_aer.AerSimulator 的屬性存取。先從 src/JlWrap/any.jl:249 以及 traceback 中顯示的 PythonCall 屬性查找開始,接著將對 num_qubits 的存取與 Tab 補全路徑進行比較。完成標準是:test.num_qubits 傳回 Python 屬性的數值,且不會出現 Array 欄位錯誤。

由索引模型根據 Issue 內容生成。

描述

bug

Affects: PythonCall

Describe the bug
Im trying to use qiskit_aer, which is a python package, from Julia.
First I add the dependencies, which results in my CondaPkg.toml to look like this:

[deps]
qiskit-aer = "0.16.1.*"
qiskit = "1.4.2.*"

Then I load it:

const qiskit_aer = PythonCall.pynew()
PythonCall.pycopy!(qiskit_aer, PythonCall.pyimport("qiskit_aer"))

Now I can create an simulator object:

test = qiskit_aer.AerSimulator(
               method="statevector",
               device="CPU",
               enable_truncation=false,
               target=[0]
           )

And I can see all its attributes when pressing tab for auto compleation:

julia> test.
_AVAILABLE_DEVICES         _AVAILABLE_METHODS         _BASIS_GATES               _CUSTOM_INSTR              _DEFAULT_CONFIGURATION     _SIMULATION_DEVICES        _SIMULATION_METHODS
__abstractmethods__        __class__                  __delattr__                __dict__                   __dir__                    __doc__                    __eq__
__format__                 __ge__                     __getattribute__           __getstate__               __gt__                     __hash__                   __init__
__init_subclass__          __le__                     __lt__                     __module__                 __ne__                     __new__                    __reduce__
__reduce_ex__              __repr__                   __setattr__                __sizeof__                 __slots__                  __str__                    __subclasshook__
__weakref__                _abc_impl                  _assemble_noise_model      _basis_gates               _cached_basis_gates        _check_basis_gates         _compile
_configuration             _controller                _convert_binds             _convert_circuit_binds     _coupling_map              _default_options           _execute_circuits
_execute_circuits_job      _format_results            _from_backend              _get_executor              _instruction_schedule_map  _mapping                   _options
_options_configuration     _options_properties        _properties                _provider                  _run_circuits              _set_configuration_option  _set_method_config
_set_properties_option     _target                    acquire_channel            available_devices          available_methods          backend_version            clear_options
configuration              control_channel            coupling_map               description                drive_channel              dt                         dtm
from_backend               instruction_durations      instruction_schedule_map   instructions               max_circuits               meas_map                   measure_channel
name                       num_qubits                 online_date                operation_names            operations                 options                    properties
provider                   qubit_properties           run                        set_max_qubits             set_option                 set_options                status
target

So far it works great. Now the bug occurs when I actually want to get one of these attributes:

julia> test.num_qubits
ERROR: Python: AttributeError: Julia: type Array has no field num_qubits
Python stacktrace:
 [1] __getattr__
   @ ~/.julia/packages/PythonCall/WMWY0/src/JlWrap/any.jl:249
 [2] num_qubits
   @ qiskit.providers.backend /files/home/part8/user/Bookworm/Documents/project/.CondaPkg/env/lib/python3.11/site-packages/qiskit/providers/backend.py:406
Stacktrace:
 [1] pythrow()
   @ PythonCall.Core ~/.julia/packages/PythonCall/WMWY0/src/Core/err.jl:92
 [2] errcheck
   @ ~/.julia/packages/PythonCall/WMWY0/src/Core/err.jl:10 [inlined]
 [3] pygetattr(x::Py, k::String)
   @ PythonCall.Core ~/.julia/packages/PythonCall/WMWY0/src/Core/builtins.jl:62
 [4] getproperty(x::Py, k::Symbol)
   @ PythonCall.Core ~/.julia/packages/PythonCall/WMWY0/src/Core/Py.jl:273
 [5] top-level scope
   @ REPL[19]:1

I would expect this to just return a number. The attribute existes, see docs.

Your system

julia> versioninfo()
Julia Version 1.11.4
Commit 8561cc3d68d (2025-03-10 11:36 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 24 × 13th Gen Intel(R) Core(TM) i7-13700
  WORD_SIZE: 64
  LLVM: libLLVM-16.0.6 (ORCJIT, alderlake)
Threads: 1 default, 0 interactive, 1 GC (on 24 virtual cores)
Environment:
  JULIA_EDITOR = code
julia> CondaPkg.status()
CondaPkg Status /files/home/part8/user/Bookworm/Documents/project/CondaPkg.toml
Environment
  /files/home/part8/user/Bookworm/Documents/project/.CondaPkg/env
Packages
  qiskit v1.4.2 (1.4.2.*)
  qiskit-aer v0.16.1 (0.16.1.*)
主要語言
Julia
星號
1.1k
分支
89
平均合併
2 天 15 小時
30 天內合併 PR
7

環境準備

這個專案沒有提供開發容器、Dockerfile 或貢獻指南,環境需要你自己搭建:先看它的 README,通用步驟見我們的新手貢獻指南。

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

JuliaPy/PythonCall.jl 的其他 Issue

查看 JuliaPy/PythonCall.jl 的全部 Issue

相似的 Issue

更多 Julia Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。