Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Error accessing attribute of Python object from Julia.

オープン
#598 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
45/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
python
領域
backend

調査の方向性

提供された Julia および CondaPkg のバージョンで、qiskit_aer.AerSimulator の属性アクセスを再現します。src/JlWrap/any.jl:249 と traceback に示されている PythonCall の属性ルックアップから開始し、num_qubits へのアクセスをタブ補完のパスと比較します。test.num_qubits が Array フィールドエラーなしで Python 属性の数値を返せば完了です。

索引モデルが 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時間
マージ済み PR(30日)
7

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

JuliaPy/PythonCall.jl のほかの issue

JuliaPy/PythonCall.jl の issue をすべて見る

似ている issue

Julia の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。