有没有办法用 conda 安装 pyarrow 每晚构建?

Is there a way to install pyarrow nightly builds with conda?

我正在尝试使用 arrow-nightlies 频道使用 conda 安装 pyarrow 的夜间构建,以试验 Github 主分支中的最新代码。 Conda 的版本是4.8.3。目标环境在 MacOS

上有 python 3.8

当我 运行 conda install 我得到以下错误:

$ conda install -c arrow-nightlies pyarrow=0.16.1.dev446
[...]

UnsatisfiableError: The following specifications were found
to be incompatible with the existing python installation in your environment:

Specifications:

  - pyarrow=0.16.1.dev446 -> python[version='>=2.7,<2.8.0a0|>=3.5,<3.6.0a0']

Your python: python=3.8
[...]

尽管有 python 3.8 的构建:

# Name                       Version           Build  Channel     
pyarrow                0.16.1.dev446  py36h398749e_0  arrow-nightlies
pyarrow                0.16.1.dev446  py37h398749e_0  arrow-nightlies
pyarrow                0.16.1.dev446  py38h398749e_0  arrow-nightlies

我尝试将 python 降级为 3.73.63.5,但我总是遇到相同的 UnsatisfiableError 异常。

有办法解决这个问题吗?

编辑:

在 运行ning @cel 建议之后:

conda create -n foo -c arrow-nightlies python=3.8 pyarrow=0.16.1.dev446 --dry-run

我得到:

UnsatisfiableError: The following specifications were found to be incompatible with each other:

Output in format: Requested package -> Available versions

Package python conflicts for:
pyarrow=0.16.1.dev446 -> python[version='>=3.6,<3.7.0a0|>=3.8,<3.9.0a0|>=3.7,<3.8.0a0']
python=3.8
pyarrow=0.16.1.dev446 -> numpy[version='>=1.16,<2.0a0'] -> python[version='>=2.7,<2.8.0a0|>=3.5,<3.6.0a0']

conda config --show 的输出:

$ conda config --show
add_anaconda_token: True
add_pip_as_python_dependency: True
aggressive_update_packages:
  - ca-certificates
  - certifi
  - openssl
allow_conda_downgrades: False
allow_cycles: True
allow_non_channel_urls: False
allow_softlinks: False
always_copy: False
always_softlink: False
always_yes: None
anaconda_upload: None
auto_activate_base: True
auto_stack: 0
auto_update_conda: True
bld_path: 
changeps1: True
channel_alias: https://conda.anaconda.org
channel_priority: flexible
channels:
  - defaults
client_ssl_cert: None
client_ssl_cert_key: None
clobber: False
conda_build: {}
create_default_packages: []
croot: /Users/XXXXXXXX/miniconda3/conda-bld
custom_channels:
  pkgs/main: https://repo.anaconda.com
  pkgs/r: https://repo.anaconda.com
  Users/XXXXXXXX/miniconda3/conda-bld: file://
  pkgs/pro: https://repo.anaconda.com
custom_multichannels:
  defaults: 
    - https://repo.anaconda.com/pkgs/main
    - https://repo.anaconda.com/pkgs/r
  local: 
    - file:///Users/XXXXXXXX/miniconda3/conda-bld
debug: False
default_channels:
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
default_python: 3.6
default_threads: None
deps_modifier: not_set
dev: False
disallowed_packages: []
download_only: False
dry_run: False
enable_private_envs: False
env_prompt: ({default_env}) 
envs_dirs:
  - /Users/XXXXXXXX/miniconda3/envs
  - /Users/XXXXXXXX/.conda/envs
error_upload_url: https://conda.io/conda-post/unexpected-error
execute_threads: 1
extra_safety_checks: False
force: False
force_32bit: False
force_reinstall: False
force_remove: False
ignore_pinned: False
json: False
local_repodata_ttl: 1
migrated_channel_aliases: []
migrated_custom_channels: {}
non_admin_enabled: True
notify_outdated_conda: True
offline: False
override_channels_enabled: True
path_conflict: clobber
pinned_packages: []
pip_interop_enabled: False
pkgs_dirs:
  - /Users/XXXXXXXX/miniconda3/pkgs
  - /Users/XXXXXXXX/.conda/pkgs
proxy_servers: {}
quiet: False
remote_backoff_factor: 1
remote_connect_timeout_secs: 9.15
remote_max_retries: 3
remote_read_timeout_secs: 60.0
repodata_fns:
  - current_repodata.json
  - repodata.json
repodata_threads: None
report_errors: None
restore_free_channel: False
rollback_enabled: True
root_prefix: /Users/XXXXXXXX/miniconda3
safety_checks: warn
sat_solver: pycosat
separate_format_cache: False
shortcuts: True
show_channel_urls: None
solver_ignore_timestamps: False
ssl_verify: True
subdir: osx-64
subdirs:
  - osx-64
  - noarch
target_prefix_override: 
track_features: []
unsatisfiable_hints: True
unsatisfiable_hints_check_depth: 2
update_modifier: update_specs
use_index_cache: False
use_local: False
use_only_tar_bz2: False
verbosity: 0
verify_threads: 1
whitelist_channels: []

这是 conda 中的错误。按照 here 所述降级 conda 有效。

降级后,conda 显示以下之前未报告的依赖项:

$ conda create -n foo -c arrow-nightlies pyarrow=0.16.1.dev510 --dry-run
Collecting package metadata: done
Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:

  - pyarrow=0.16.1.dev510 -> arrow-cpp[version='>=0.16.1.0DEV.510,<0.17.0a0'] -> aws-sdk-cpp
  - pyarrow=0.16.1.dev510 -> arrow-cpp[version='>=0.16.1.0DEV.510,<0.17.0a0'] -> boost-cpp[version='>=1.72.0,<1.72.1.0a0']
  - pyarrow=0.16.1.dev510 -> arrow-cpp[version='>=0.16.1.0DEV.510,<0.17.0a0'] -> grpc-cpp[version='>=1.27.3,<1.28.0a0']
  - pyarrow=0.16.1.dev510 -> arrow-cpp[version='>=0.16.1.0DEV.510,<0.17.0a0'] -> libcxx[version='>=9.0.1']
  - pyarrow=0.16.1.dev510 -> arrow-cpp[version='>=0.16.1.0DEV.510,<0.17.0a0'] -> lz4-c[version='>=1.8.3,<1.8.4.0a0']
  - pyarrow=0.16.1.dev510 -> arrow-cpp[version='>=0.16.1.0DEV.510,<0.17.0a0'] -> python_abi=3.8[build=*_cp38]
  - pyarrow=0.16.1.dev510 -> arrow-cpp[version='>=0.16.1.0DEV.510,<0.17.0a0'] -> snappy[version='>=1.1.8,<2.0a0']
  - pyarrow=0.16.1.dev510 -> arrow-cpp[version='>=0.16.1.0DEV.510,<0.17.0a0'] -> thrift-cpp[version='>=0.13.0,<0.14.0a0']
  - pyarrow=0.16.1.dev510 -> arrow-cpp[version='>=0.16.1.0DEV.510,<0.17.0a0'] -> zstd[version='>=1.4.4,<1.4.5.0a0']

我可以在解决依赖关系后安装 pyarrow nightlies