Làm cách nào để cập nhật Anaconda?


259

Tôi đã cài đặt Anaconda trên máy tính của mình và tôi muốn cập nhật nó. Trong Navigator tôi có thể thấy rằng có một số gói riêng lẻ có thể được cập nhật, nhưng cũng có một anacondagói đôi khi có số phiên bản và đôi khi nói custom. Làm thế nào để tôi tiến hành?

nhập mô tả hình ảnh ở đây


1
Hầu hết các câu trả lời gợi ý conda update [-n root] -v anaconda, nhưng nó cung cấp cho DOWNGRADE của tôi python: 3.7.0-hc167b69_0 --> 3.6.6-hc167b69_0. Có vẻ rất tan vỡ.
smci

Câu trả lời:


417

95% người thực sự muốn gì

Trong hầu hết các trường hợp, điều bạn muốn làm khi bạn nói rằng bạn muốn cập nhật Anaconda là thực thi lệnh:

conda update --all

(Nhưng điều này nên được preceeded bởi conda update -n root condavì vậy bạn phải mới nhất condaphiên bản cài đặt)

Điều này sẽ cập nhật tất cả các gói trong môi trường hiện tại lên phiên bản mới nhất - với bản in nhỏ là nó có thể sử dụng phiên bản cũ hơn của một số gói để đáp ứng các ràng buộc phụ thuộc (thường thì điều này là không cần thiết và khi cần thiết gói giải quyết kế hoạch sẽ làm hết sức mình để giảm thiểu tác động).

Điều này cần được thực hiện từ dòng lệnh và cách tốt nhất để đến đó là từ Anaconda Navigator, sau đó là tab "Môi trường", sau đó nhấp vào hình tam giác bên cạnh rootmôi trường, chọn "Open Terminal":

Mở thiết bị đầu cuối từ Navigator

Thao tác này sẽ chỉ cập nhật một môi trường được chọn (trong trường hợp này là rootmôi trường). Nếu bạn có các môi trường khác mà bạn muốn cập nhật, bạn có thể lặp lại quy trình trên, nhưng trước tiên hãy nhấp vào môi trường. Khi nó được chọn, có một điểm đánh dấu hình tam giác ở bên phải (xem hình trên, bước 3). Hoặc từ dòng lệnh, bạn có thể cung cấp tên môi trường ( -n envname) hoặc đường dẫn ( -p /path/to/env), ví dụ để cập nhật dspyrmôi trường của bạn từ ảnh chụp màn hình ở trên:

conda update -n dspyr --all

Cập nhật các gói riêng lẻ

Nếu bạn chỉ quan tâm đến việc cập nhật một gói riêng lẻ thì chỉ cần nhấp vào mũi tên màu xanh hoặc số phiên bản màu xanh trong Bộ điều hướng, ví dụ: astroidhoặc astropytrong ảnh chụp màn hình ở trên và điều này sẽ gắn thẻ các gói đó để nâng cấp. Khi bạn hoàn tất, bạn cần nhấp vào nút "Áp dụng":

Áp dụng để cập nhật các gói riêng lẻ

Hoặc từ dòng lệnh:

conda update astroid astropy

Chỉ cập nhật các gói trong Phân phối Anaconda tiêu chuẩn

Nếu bạn không quan tâm đến các phiên bản gói và chỉ muốn "bộ mới nhất của tất cả các gói trong Phân phối Anaconda tiêu chuẩn, miễn là chúng hoạt động cùng nhau" , thì bạn nên xem qua ý chính này .

Tại sao cập nhật gói Anaconda hầu như luôn là một ý tưởng tồi

Trong hầu hết các trường hợp cập nhật gói Anaconda trong danh sách gói sẽ có một kết quả đáng ngạc nhiên: bạn thực sự có thể hạ cấp nhiều gói (thực tế, điều này có khả năng nếu nó chỉ ra phiên bản là custom). Các ý chính ở trên cung cấp chi tiết.

Tận dụng môi trường conda

rootMôi trường của bạn có lẽ không phải là nơi tốt để thử và quản lý một bộ gói chính xác: đó sẽ là một không gian làm việc năng động với các gói mới được cài đặt và các gói được cập nhật ngẫu nhiên. Nếu bạn cần một bộ gói chính xác thì hãy tạo một môi trường conda để giữ chúng. Nhờ bộ đệm gói conda và cách liên kết tệp được sử dụng, việc này thường là i) nhanh và ii) tiêu tốn rất ít dung lượng đĩa bổ sung. Ví dụ

conda create -n myspecialenv -c bioconda -c conda-forge python=3.5 pandas beautifulsoup seaborn nltk

Các tài liệu conda có nhiều chi tiết và ví dụ.

pip, PyPI, và setuptools?

Không ai trong số này sẽ giúp cập nhật các gói đã được cài đặt từ PyPI thông qua piphoặc bất kỳ gói nào được cài đặt sử dụng python setup.py install. conda listsẽ cung cấp cho bạn một số gợi ý về các gói Python dựa trên pip mà bạn có trong môi trường, nhưng sẽ không có gì đặc biệt để cập nhật chúng.

Sử dụng thương mại của Anaconda hoặc Anaconda Enterprise

Đó là khá nhiều chính xác cùng một câu chuyện, ngoại trừ rằng bạn có thể không thể cập nhật rootmôi trường nếu nó được cài đặt bởi người khác (nói với /opt/anaconda/latest). Nếu bạn không thể cập nhật các môi trường bạn đang sử dụng, bạn có thể sao chép và sau đó cập nhật:

conda create -n myenv --clone root
conda update -n myenv --all

10
Tôi vẫn sẽ tiếp tục conda update anacondacập nhật trong tương lai. Chỉ cần làm conda update --allvà không thể khởi động Navigator sau đó vì PySide ModuleNotFoundErrorđiều đó tôi không thể giải quyết. Ngay cả sau khi hạ cấp. Vì vậy, tôi đã phải cài đặt lại Anaconda và thiết lập lại môi trường của mình. Và đó là lần thứ 2 điều này xảy ra với tôi trong khi tôi không bao giờ gặp vấn đề gì conda update anaconda. Ngay cả khi điều đó có nghĩa là các gói của tôi không được cập nhật (phân phối vẫn được cập nhật khá thường xuyên: docs.anaconda.com/anaconda/release-notes ) Tôi thích có một hệ thống ổn định
MattSchmatt

4
@MattSchmatt đảm bảo bạn cũng làm conda update condanhư vậy. Conda đã phát triển đáng kể trong năm qua, và đặc biệt chúng tôi đã có một bản phát hành vào cuối tháng 9 năm 2017 giới thiệu rất nhiều cải tiến. Nếu conda update --allphá vỡ mọi thứ (trong lịch sử, gần như chắc chắn phải làm) thì đây là một lỗi bạn nên báo cáo với trình theo dõi vấn đề GitHub của conda - ngày nay, hoạt động đó không nên phá vỡ bất kỳ thành phần nào hiện có (với điều kiện proviso conda cần phải khắc phục ngày).
IanSR

7
Tôi đã phải làm conda update -n root condathay vì những gì được đề cập ở trên để nó hoạt động.
Lucas

9
Đây conda update --allkhông phải là điều mà 95% người dân muốn. Nó có thể dẫn đến môi trường không ổn định. Trả lời bởi user3056882 an toàn hơn.
gagarine

3
conda update --allthất bại với tôi với lỗi 'cho phép bị từ chối'. Chạy nó với đặc quyền quản trị viên thành công. Để chạy với đặc quyền Quản trị viên: Bắt đầu> Anaconda3> Nhắc Anaconda> Nhấp chuột phải> Khác> Chạy với tư cách Quản trị viên.
BabarBaig

100

Nếu bạn đang cố cập nhật phiên bản Anaconda của mình lên phiên bản mới, bạn sẽ nhận thấy rằng việc chạy trình cài đặt mới sẽ không hoạt động, vì nó phàn nàn thư mục cài đặt không trống.

Vì vậy, bạn nên sử dụng conda để nâng cấp chi tiết theo các tài liệu chính thức :

conda update conda
conda update anaconda


Trong Windows, nếu bạn đã thực hiện cài đặt "cho tất cả người dùng", có thể cần phải chạy từ dấu nhắc Anaconda với đặc quyền của Quản trị viên.

Chỉ cần nhấp chuột phải vào Anaconda Prompt trong menu bắt đầu

Điều này ngăn ngừa lỗi:

ERROR conda.core.link:_execute(502): Đã xảy ra lỗi khi gỡ cài đặt gói 'mặc định :: conda-4.5.4-py36_0'. PermissionError (13, 'Truy cập bị từ chối')


46

Mở "lệnh hoặc dấu nhắc" và chạy:

conda update conda
conda update anaconda

Đó là một ý tưởng tốt để chạy cả hai lệnh (lần lượt từng lệnh một) để đảm bảo rằng tất cả các tệp cơ bản được cập nhật.

Điều này sẽ đưa bạn trở lại các 'bản phát hành' mới nhất, chứa các gói được mọi người tại Continuum chọn để hoạt động tốt cùng nhau.

Nếu bạn muốn phiên bản cuối cùng của mỗi gói chạy (điều này có thể dẫn đến một môi trường không ổn định ):

conda update --all 

Hi vọng điêu nay co ich.

Nguồn:


10
Nếu bạn thích một môi trường ổn định hơn là có phiên bản mới nhất của mọi gói, thì hãy bỏ qua bước 4. conda update anacondanên đưa bạn trở lại một trong những 'bản phát hành', trong đó có các gói được mọi người tại Continuum chọn để hoạt động tốt.
rudolfbyker

Cảm ơn bạn rudolfbyker. Tôi đã chỉnh sửa câu trả lời để phản ánh nhận xét của bạn.
H.Latte

Nếu bạn nhận được gói không cài đặt lỗi thử conda install anaconda.
Shital Shah

Tôi cập nhật conda và sau đó tất cả các gói của tôi ngừng hoạt động .... Tôi không biết tại sao nhưng nó nghĩ rằng giải pháp của bạn không phải là một ý tưởng tốt vì conda không ổn định bằng cách sử dụng cách này để nâng cấp .... đây là một cách để lăn trở lại
Travis

6

Nếu bạn gặp khó khăn để lấy ví dụ: từ 3.3.x đến 4.x (conda update conda "không hoạt động" để chuyển sang phiên bản tiếp theo) hơn là thử nó cụ thể hơn như vậy:

conda install conda=4.0 (or conda install anaconda=4.0)

https://www.anaconda.com/blog/developer-blog/anaconda-4-release/

Bạn nên biết những gì bạn làm, bởi vì conda có thể bị hỏng do cài đặt bắt buộc. Nếu bạn muốn có được sự linh hoạt / bảo mật hơn, bạn có thể sử dụng pkg-manager như nix (-pkgs) [với nix-shell] / NixOS.


Có lẽ, nhưng bạn sẽ không coi đó là hoàn toàn bị phá vỡ, như là một loại bùn?
smci

Phiên bản "liên tục" là một tiêu chuẩn, ví dụ như trong phát triển (web). Giống như mọi khi, nếu bạn muốn mọi thứ được sắp xếp và đánh giá lại, bạn nên xây dựng lại tất cả với các Phiên bản cập nhật. Nói chung, một "cập nhật conda --all" với các bản cập nhật ../conda/../pinned tập tin cũng hoạt động tốt (! Hãy chăm sóc cài đặt pip bổ sung!).
InLaw

2
Khi chúng ta phải thông báo cho người cập nhật một cách thủ công phiên bản cụ thể để cập nhật, thì đó không còn là trình cập nhật, chỉ là trình cài đặt bị hỏng với GUI đẹp. Nói chung, conda update --allphá vỡ mọi thứ, như Câu hỏi thường gặp của riêng họ nói, và trong trường hợp của tôi, nó vui vẻ đề nghị hạ cấp con trăn của tôi từ 3.7.0 xuống 3.6.6 (mặc dù biết 3.7.1 có sẵn)
smci 14/11/18

Đó là ý kiến ​​của bạn về một trình cài đặt nhưng nó là TIÊU CHUẨN trong CNTT (với một số lý do đằng sau nó). Một lần nữa, nó phụ thuộc đặc biệt vào tệp được ghim của bạn VÀ nếu bạn đã cài đặt pkgs thông qua PIP! Về trường hợp của bạn: nếu bạn có pkgs không khả dụng hoặc tương thích với python 3.7.x THAN, nó sẽ có phiên bản Python với khả năng tối ưu phù hợp với các hạn chế của tất cả các pkg trong env của bạn. Đó là lý do có "conda".
InLaw

Lý do của bạn để sử dụng conda là gì (nếu không phải là kiểm tra tính toàn vẹn / hạ cấp mà bạn đang phàn nàn)?
InLaw

6

Đây là những gì tài liệu chính thức của Anaconda khuyến nghị:

conda update conda 
conda update anaconda=2020.02

Nếu dòng thứ hai ném lỗi (lỗi đánh máy trong tài liệu?) Thì điều này đã hoạt động ở đây:

conda install anaconda=2020.02

(bạn có thể tìm thấy tất cả các phiên bản chỉ định ở đây )

Lệnh sẽ cập nhật lên một bản phát hành cụ thể của gói meta Anaconda.

Đây là imho những gì 95% người dùng Anaconda muốn. Đơn giản chỉ cần nâng cấp lên phiên bản mới nhất của gói meta Anaconda (được phân phối và thử nghiệm bởi Nhà phân phối Anaconda) và không quan tâm đến trạng thái cập nhật của các gói riêng lẻ (sẽ được phát hành bởi conda update --all).


@Arrow_Raider Liên quan đến conda update ...lỗi đánh máy? Đã đồng ý.
MattSchmatt

5

Đây là cách thực hành tốt nhất (theo kinh nghiệm khiêm tốn của tôi). Chọn bốn gói này cũng sẽ cập nhật tất cả các phụ thuộc khác thành các phiên bản phù hợp sẽ giúp bạn giữ cho môi trường của bạn nhất quán. Cái sau là một vấn đề phổ biến mà những người khác đã thể hiện trong các phản ứng trước đó. Giải pháp này không cần thiết bị đầu cuối.

Cập nhật và nâng cấp Anaconda3 hoặc Anaconda2 thực hành tốt nhất


Cảm ơn bạn, đã giúp tôi!
Ilan Aizelman WS

3

Mở Anaconda cmd ở chế độ cơ sở:

Sau đó sử dụng conda cập nhật conda để cập nhật Anaconda

Sau đó, bạn có thể sử dụng cập nhật conda - tất cả để cập nhật tất cả các yêu cầu cho Anaconda

conda update conda  
conda update --all  

2

Trên Mac mở terminal và chạy theo 2 lệnh.

conda update conda
conda update anaconda

đảm bảo chạy từng lệnh nhiều lần để cập nhật lên phiên bản hiện tại.


7
nhiều lần? doest có ý nghĩa để làm điều đó.
Deepak

2
Theo kinh nghiệm của tôi, nếu bạn chỉ chạy các lệnh một khi nó không cập nhật lên các phiên bản mới nhất của gói python. Vì vậy, tôi đề nghị chạy nó nhiều lần.
Ajay Sant

Đây là bản sao của một câu trả lời khác ở đây trên cùng một trang: stackoverflow.com/a/46842054/109618
David J.

2

Tôi đang sử dụng Windows 10. Các bản cập nhật sau đây mọi thứ và cũng cài đặt một số gói mới, bao gồm cả bản cập nhật python (đối với tôi là 3.7.3).

Tại trình bao, hãy thử các cách sau (hãy chắc chắn thay đổi nơi dữ liệu Anaconda3 của bạn được cài đặt). Phải mất một thời gian để cập nhật mọi thứ.

conda update --prefix X:\XXXXData\Anaconda3 anaconda

1

Để cập nhật phiên bản đã cài đặt của bạn lên phiên bản mới nhất, giả sử 2019.07, hãy chạy

conda install anaconda=2019.07

Trong hầu hết các trường hợp, phương pháp này có thể đáp ứng nhu cầu của bạn và tránh các vấn đề phụ thuộc


0
conda create -n py37 -c anaconda anaconda=5.3.1
conda env export -n py37 --file env.yaml

định vị env.yaml trong C: \ Windows \ System32 và chạy cmd với tư cách quản trị viên

conda env update -n root -f env.yaml  

sau đó nó hoạt động


-6

Điều này chỉ có thể cập nhật python:

conda update python
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.