Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

`PyCall` build error owing to `JSONDecodeError`

未关闭
#1,035 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
停滞
技术栈
julia, python
领域
build-system

调研方向

首先重现 Pkg.build("PyCall"),并检查 Conda.add 调用附近的 deps/build.jl,同时查看 Conda.jl 的 src/Conda.jl 中的进程运行器。追踪 conda JSONDecodeError,并确定 build 是否能够成功安装 numpy;完成的标准是报告中的 PyCall build 在所述的 macOS arm64 环境上完成。

由索引模型根据 Issue 内容生成。

描述

was working a few days ago, but after an up, build PyCall fails, with the following build log.

Collecting package metadata (current_repodata.json): ...working... failed

# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<

    Traceback (most recent call last):
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/exceptions.py", line 1132, in __call__
        return func(*args, **kwargs)
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/cli/main.py", line 69, in main_subshell
        exit_code = do_call(args, p)
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/cli/conda_argparse.py", line 122, in do_call
        return getattr(module, func_name)(args, parser)
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/notices/core.py", line 121, in wrapper
        return func(*args, **kwargs)
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/cli/main_install.py", line 20, in execute
        install(args, parser, 'install')
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/cli/install.py", line 264, in install
        unlink_link_transaction = solver.solve_for_transaction(
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/core/solve.py", line 134, in solve_for_transaction
        unlink_precs, link_precs = self.solve_for_diff(update_modifier, deps_modifier,
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/core/solve.py", line 177, in solve_for_diff
        final_precs = self.solve_final_state(update_modifier, deps_modifier, prune, ignore_pinned,
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/core/solve.py", line 282, in solve_final_state
        ssc = self._collect_all_metadata(ssc)
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/common/io.py", line 84, in decorated
        return f(*args, **kwds)
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/core/solve.py", line 449, in _collect_all_metadata
        index, r = self._prepare(prepared_specs)
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/core/solve.py", line 1064, in _prepare
        reduced_index = get_reduced_index(self.prefix, self.channels,
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/core/index.py", line 267, in get_reduced_index
        new_records = SubdirData.query_all(spec, channels=channels, subdirs=subdirs,
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/core/subdir_data.py", line 169, in query_all
        result = tuple(chain.from_iterable(executor.map(subdir_query, channel_urls)))
      File "/Users/cokes/.julia/conda/3/lib/python3.10/concurrent/futures/_base.py", line 621, in result_iterator
        yield _result_or_cancel(fs.pop())
      File "/Users/cokes/.julia/conda/3/lib/python3.10/concurrent/futures/_base.py", line 319, in _result_or_cancel
        return fut.result(timeout)
      File "/Users/cokes/.julia/conda/3/lib/python3.10/concurrent/futures/_base.py", line 451, in result
        return self.__get_result()
      File "/Users/cokes/.julia/conda/3/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
        raise self._exception
      File "/Users/cokes/.julia/conda/3/lib/python3.10/concurrent/futures/thread.py", line 58, in run
        result = self.fn(*self.args, **self.kwargs)
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/core/subdir_data.py", line 158, in subdir_query
        return tuple(
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/core/subdir_data.py", line 174, in query
        self.load()
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/core/subdir_data.py", line 264, in load
        _internal_state = self._load()
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/core/subdir_data.py", line 315, in _load
        cache.load_state()  # XXX should this succeed even if FileNotFound?
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/gateways/repodata/__init__.py", line 570, in load_state
        self.load(state_only=True)
      File "/Users/cokes/.julia/conda/3/lib/python3.10/site-packages/conda/gateways/repodata/__init__.py", line 528, in load
        state = json.loads(state_file.read())
      File "/Users/cokes/.julia/conda/3/lib/python3.10/json/__init__.py", line 346, in loads
        return _default_decoder.decode(s)
      File "/Users/cokes/.julia/conda/3/lib/python3.10/json/decoder.py", line 340, in decode
        raise JSONDecodeError("Extra data", s, end)
    json.decoder.JSONDecodeError: Extra data: line 9 column 2 (char 289)

`$ /Users/cokes/.julia/conda/3/bin/conda install -y numpy`

  environment variables:
                 CIO_TEST=<not set>
                  CONDARC=/Users/cokes/.julia/conda/3/condarc-julia.yml
             CONDA_PREFIX=/Users/cokes/.julia/conda/3
               CONDA_ROOT=/Users/cokes/.julia/conda/3
           CURL_CA_BUNDLE=<not set>
                 GEM_PATH=/Users/cokes/.gem/ruby/3.1.3:/Users/cokes/.rubies/ruby-
                          3.1.3/lib/ruby/gems/3.1.0
                 INFOPATH=/opt/homebrew/share/info:
          JULIA_LOAD_PATH=@:/var/folders/b3/p558slm10qj7tzmkx22rhyc80000gn/T/jl_YR0kPl
               LD_PRELOAD=<not set>
                  MANPATH=/opt/homebrew/share/man::
                     PATH=/Users/cokes/.gem/ruby/3.1.3/bin:/Users/cokes/.rubies/ruby-
                          3.1.3/lib/ruby/gems/3.1.0/bin:/Users/cokes/.rubies/ruby-
                          3.1.3/bin:/Users/cokes/opt/anaconda3/bin:/Users/cokes/opt/anaconda3/co
                          ndabin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cry
                          ptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/
                          usr/local/go/bin:/var/run/com.apple.security.cryptexd/codex.system/boo
                          tstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system
                          /bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/b
                          ootstrap/usr/appleinternal/bin
         PYTHONIOENCODING=UTF-8
       REQUESTS_CA_BUNDLE=<not set>
            SSL_CERT_FILE=<not set>

     active environment : base
    active env location : /Users/cokes/.julia/conda/3
       user config file : /Users/cokes/.condarc
 populated config files : /Users/cokes/.julia/conda/3/.condarc
                          /Users/cokes/.condarc
                          /Users/cokes/.julia/conda/3/condarc-julia.yml
          conda version : 23.3.1
    conda-build version : not installed
         python version : 3.10.8.final.0
       virtual packages : __archspec=1=arm64
                          __osx=13.3.1=0
                          __unix=0=0
       base environment : /Users/cokes/.julia/conda/3  (writable)
      conda av data dir : /Users/cokes/.julia/conda/3/etc/conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/osx-arm64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://repo.anaconda.com/pkgs/main/osx-arm64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/osx-arm64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /Users/cokes/.julia/conda/3/pkgs
                          /Users/cokes/.conda/pkgs
       envs directories : /Users/cokes/.julia/conda/3/envs
                          /Users/cokes/.conda/envs
               platform : osx-arm64
             user-agent : conda/23.3.1 requests/2.28.1 CPython/3.10.8 Darwin/22.4.0 OSX/13.3.1
                UID:GID : 501:20
             netrc file : None
           offline mode : False

An unexpected error has occurred. Conda has prepared the above report.

Upload successful.
┌ Info: Using the Python distribution in the Conda package by default.
└ To use a different Python version, set ENV["PYTHON"]="pythoncommand" and re-run Pkg.build("PyCall").
[ Info: Running `conda install -y numpy` in root environment
ERROR: LoadError: failed process: Process(setenv(`/Users/cokes/.julia/conda/3/bin/conda install -y numpy`,["_CE_M=", "PATH=/Users/cokes/.gem/ruby/3.1.3/bin:/Users/cokes/.rubies/ruby-3.1.3/lib/ruby/gems/3.1.0/bin:/Users/cokes/.rubies/ruby-3.1.3/bin:/Users/cokes/opt/anaconda3/bin:/Users/cokes/opt/anaconda3/condabin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/usr/local/go/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin", "MANPATH=/opt/homebrew/share/man::", "ITERM_PROFILE=Default", "USER=cokes", "RUBY_ENGINE=ruby", "RUBYOPT=", "SHELL=/bin/zsh", "LC_TERMINAL_VERSION=3.4.19", "COLORFGBG=7;0"  …  "SECURITYSESSIONID=186a3", "TERM_PROGRAM_VERSION=3.4.19", "COMMAND_MODE=unix2003", "PWD=/Users/cokes/.julia/packages", "RUBY_ROOT=/Users/cokes/.rubies/ruby-3.1.3", "TERM_PROGRAM=iTerm.app", "GEM_HOME=/Users/cokes/.gem/ruby/3.1.3", "CONDA_PREFIX=/Users/cokes/.julia/conda/3", "TERM_SESSION_ID=w0t7p0:B4D22DC8-2AB8-4DAA-96B7-7F7B563EE985", "JULIA_LOAD_PATH=@:/var/folders/b3/p558slm10qj7tzmkx22rhyc80000gn/T/jl_YR0kPl"]), ProcessExited(1)) [1]

Stacktrace:
 [1] pipeline_error
   @ ./process.jl:565 [inlined]
 [2] run(::Cmd; wait::Bool)
   @ Base ./process.jl:480
 [3] run
   @ ./process.jl:477 [inlined]
 [4] runconda(args::Cmd, env::String)
   @ Conda ~/.julia/packages/Conda/kOnIE/src/Conda.jl:128
 [5] add(pkg::String, env::String; channel::String)
   @ Conda ~/.julia/packages/Conda/kOnIE/src/Conda.jl:224
 [6] add (repeats 2 times)
   @ ~/.julia/packages/Conda/kOnIE/src/Conda.jl:222 [inlined]
 [7] top-level scope
   @ ~/.julia/packages/PyCall/twYvK/deps/build.jl:79
 [8] include(fname::String)
   @ Base.MainInclude ./client.jl:476
 [9] top-level scope
   @ none:5
in expression starting at /Users/cokes/.julia/packages/PyCall/twYvK/deps/build.jl:43

version info

  • PyCall v1.95.1
  • Conda v1.8.0
julia> versioninfo()
Julia Version 1.8.5
Commit 17cfb8e65ea (2023-01-08 06:45 UTC)
Platform Info:
  OS: macOS (arm64-apple-darwin21.5.0)
  CPU: 8 × Apple M1
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, apple-m1)
  Threads: 1 on 4 virtual cores
主要语言
Julia
星标
1.5k
派生
186
PR 合并指标
30 天内没有已合并 PR

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

JuliaPy/PyCall.jl 的其他 Issue

查看 JuliaPy/PyCall.jl 的全部 Issue

相似的 Issue

更多 Julia Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。