4

While installing tensorflow on M1 Max,

conda install -c apple tensorflow-deps

This message always shows up:

The following packages will be SUPERSEDED by a higher-priority channel:

  numpy                      pypi/pypi::numpy-1.21.4-pypi_0 --> conda-forge/osx-arm64::numpy-1.19.5-py39h1f3b974_2

But for some reason, I have to keep numpy installed by pip, not from conda-forge channel.

I've already set pip_interop_enabled=True. Methods I've tried (but none of them worked):

  • Specify the pinned packages:

    echo "numpy=1.21.4=pypi*" >> ~/miniforge3/envs/this_env/conda-meta/pinned
    

    but it will be ignored, reporting conflict with pinned:

    $ conda install -c apple tensorflow-deps
    Collecting package metadata (current_repodata.json): done
    Solving environment: failed with initial frozen solve. Retrying with flexible solve.
    Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
    Collecting package metadata (repodata.json): done
    Solving environment: failed with initial frozen solve. Retrying with flexible solve.
    Solving environment: failed
    
    SpecsConfigurationConflictError: Requested specs conflict with configured specs.
      requested specs: 
        - tensorflow-deps
      pinned specs: 
        - numpy==1.21.4[build=pypi*]
    
  • Specify no update and no channel priority:

    conda install -c apple tensorflow-deps --no-update-deps --no-channel-priority
    

    but still doesn't work:

    The following packages will be SUPERSEDED by a higher-priority channel: ...
    

Could anyone please give a solution? Except for tensorflow, I want to manually lock my numpy from any change in further conda install or conda update.

Appendix - my conda config:

$ 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: False
bld_path: 
changeps1: True
channel_alias: https://conda.anaconda.org
channel_priority: flexible
channels:
  - conda-forge
client_ssl_cert: None
client_ssl_cert_key: None
clobber: False
conda_build: {}
create_default_packages: []
croot: /Users/myname/miniforge3/conda-bld
custom_channels:
  pkgs/main: https://repo.anaconda.com
  pkgs/r: https://repo.anaconda.com
  pkgs/pro: https://repo.anaconda.com
custom_multichannels:
  defaults: 
    - https://repo.anaconda.com/pkgs/main
    - https://repo.anaconda.com/pkgs/r
  local: 
debug: False
default_channels:
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
default_python: 3.9
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/myname/miniforge3/envs
  - /Users/myname/.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: True
pkgs_dirs:
  - /Users/myname/miniforge3/pkgs
  - /Users/myname/.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/myname/miniforge3
safety_checks: warn
sat_solver: pycosat
separate_format_cache: False
shortcuts: True
show_channel_urls: None
signing_metadata_url_base: None
solver_ignore_timestamps: False
ssl_verify: True
subdir: osx-arm64
subdirs:
  - osx-arm64
  - 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: []
graphitump
  • 631
  • 1
  • 5
  • 13
  • 1
    First, confirm that this is **base** environment, since that is what `miniforge3/conda-meta/pinned` implies. Second, you may need to set the `pip_interop_enabled` configuration option to `True` in order for Conda to respect the pinning on a PyPI package. If that is the case, I'll add that as a note to [my other answer](https://stackoverflow.com/a/62748267/570918), and we can close as duplicate. – merv Dec 07 '21 at 17:26
  • 1
    So, `pip_interop_enabled: True` is necessary, but not sufficient. Additionally, one needs to include a `pypi` requirement in the build string. For this case, it would be `numpy=1.21.4=pypi*` in the `pinned` file. This has all been added as info in [the proposed duplicate](https://stackoverflow.com/a/62748267/570918). – merv Dec 07 '21 at 18:34
  • Thanks @merv. I have already set `pip_interop_enabled=True` and the pinned file is actually at my ends `conda-meta`. See my edits in the question body. – graphitump Dec 07 '21 at 20:11
  • 1
    This last conflict is valid. You have successfully pinned `numpy=1.24.1`, but all the `tensorflow-deps` packages require `numpy>=1.19.4,<1.20`. I.e., you need to install a lower `numpy` first if you want `tensorflow-deps`. – merv Dec 07 '21 at 22:27

0 Answers0