Cách thay đổi môi trường trăn Anaconda mặc định


170

Tôi đã cài đặt Anaconda và tạo thêm hai môi trường: py3k (chứa Python 3.3) và py34 (chứa Python 3.4). Ngoài ra, tôi có một môi trường mặc định có tên là 'root' mà trình cài đặt Anaconda được tạo theo mặc định và chứa Python 2.7. Cái cuối cùng này là mặc định, bất cứ khi nào tôi khởi chạy 'ipython' từ thiết bị đầu cuối, nó sẽ cung cấp cho tôi phiên bản 2.7. Để làm việc với Python 3.4, tôi cần đưa ra các lệnh (trong trình bao)

source activate py34
ipython

thay đổi môi trường mặc định thành Python 3.4. Điều này hoạt động tốt, nhưng thật khó chịu vì hầu hết thời gian tôi làm việc trên Python 3.4, thay vì Python 2.7 (mà tôi giữ cho mục đích giảng dạy, đó là một câu chuyện khá dài). Dù sao, tôi muốn biết cách thay đổi môi trường mặc định thành Python 3.4, lưu ý rằng tôi không muốn cài đặt lại mọi thứ từ đầu.


7
Bạn đã cân nhắc sử dụng source activate py34trong của bạn .bashrc?
cel

1
Cảm ơn câu trả lời của bạn. Tôi đã không thử nó bởi vì tôi nghĩ rằng không thể gọi kích hoạt nguồn từ tập lệnh bash, vì lệnh nguồn cần phải được chạy trong cùng một vỏ, không phải trong một lớp con. Tôi đã thử đặt hai dòng trên vào một tập lệnh bash và tôi có thể nói rằng nó không hoạt động.
dùng2734434

4
Tôi có CONDA_ROOT="/Users/bla/miniconda"source ${CONDA_ROOT}/bin/activate ${CONDA_ROOT}/envs/empty &> /dev/nulltrong tôi .bashrcvà nó dường như hoạt động tốt.
cel

1
Tôi nghĩ rằng .bashrcnó không chạy như một tập lệnh, nhưng có nguồn gốc từ trình bao mới, do đó bạn không thể kiểm tra nó bằng cách chạy tập lệnh bash.
cel

3
@ user2734434 tệp bashrc có nguồn gốc vào đầu phiên, vì vậy nếu bạn đặt source activatenó vào, nó sẽ ảnh hưởng đến môi trường shell.
asmeker

Câu trả lời:


86

Nếu bạn chỉ muốn thay đổi sang môi trường khác, hãy sử dụng

source activate environment-name

(bạn có thể tạo environment-namebằng `conda tạo)


Thông thường, tốt nhất là chỉ tạo môi trường mới. Tuy nhiên, nếu bạn thực sự muốn thay đổi phiên bản Python trong môi trường mặc định , bạn có thể làm như sau:

Trước tiên, hãy chắc chắn rằng bạn có phiên bản mới nhất của conda bằng cách chạy

conda update conda

Sau đó chạy

conda install python=3.5

Điều này sẽ cố gắng cập nhật tất cả các gói trong môi trường gốc của bạn lên phiên bản Python 3. Nếu không thể (ví dụ: vì một số gói không được xây dựng cho Python 3.5), nó sẽ cung cấp cho bạn một thông báo lỗi cho biết (các) gói nào gây ra sự cố.

Nếu bạn đã cài đặt các gói với pip, bạn sẽ phải cài đặt lại chúng.


1
@flutefreak Nó thực sự sẽ hoạt động trên Windows ngay bây giờ (chạy conda update condatrước để đảm bảo bạn có phiên bản mới nhất). Tôi sẽ cập nhật câu trả lời.
asmeker

126
Câu trả lời này dường như không liên quan đến câu hỏi, đó là về việc thay đổi môi trường mặc định.
Bob

16
@asmeker Nhưng đó không phải là những gì được hỏi. Anh ấy không muốn cập nhật các gói trong bất kỳ env. Anh ta muốn biến py34 thành môi trường mặc định, để hoạt động mà không cần can thiệp, vì vậy py34 được kích hoạt trước khi anh ta gửi lệnh "kích hoạt nguồn".
Bob

20
Tôi phải đồng ý với @Bob ở đây. Các gói trong môi trường gốc sẽ được cập nhật lên 3.5 và điều này có thể đã giải quyết được vấn đề cụ thể của người đăng ban đầu. Nhưng khi bạn mở một dấu nhắc, bạn vẫn sẽ ở trong môi trường gốc, vì vậy bạn chưa chỉ định một môi trường mặc định khác. Vì tất cả những người muốn đạt được điều này và googles nó kết thúc ở câu hỏi này, sẽ tốt hơn nếu các câu hỏi ban đầu cũng được trả lời. Có lẽ thay đổi env mặc định thành một cái gì đó ngoài root là không thể?
arjan

4
Điều này không làm việc cho tôi. Mặc định của tôi là python 3,4, sử dụng cờ python=3.5không nâng cấp python từ 3,4 lên 3,5 ... Bạn có đề xuất nào không?
WillZ

56

Tổng quan
Một số người có nhiều môi trường Anaconda với các phiên bản khác nhau của trăn vì lý do tương thích. Trong trường hợp này, bạn nên có một tập lệnh đặt môi trường mặc định của bạn. Với phương pháp này, bạn có thể bảo tồn các phiên bản python bạn sử dụng trong môi trường của mình.

Sau đây giả định environment_name là tên của môi trường của bạn

Mac / Linux:
Chỉnh sửa hồ sơ bash của bạn sao cho dòng cuối cùng là source activate environment_name. Trong Mac OSX, đây là ~ / .bash_profile, trong các môi trường khác, đây có thể là ~ / .bashrc

Ví dụ:
Đây là cách tôi đã làm trên Mac OSX

  1. Mở Terminal và gõ:

    nano ~/.bash_profile

  2. Đi đến cuối tệp và nhập nội dung sau, trong đó "p3.5" là môi trường của tôi:

    source activate p3.5

  3. Thoát tệp. Bắt đầu một cửa sổ thiết bị đầu cuối mới.

  4. Nhập nội dung sau để xem môi trường nào đang hoạt động

    conda info -e

Kết quả cho thấy tôi đang sử dụng môi trường p3 của mình theo mặc định.

Đối với Windows:
Tạo tệp lệnh (.cmd) bằng activate environment_namevà làm theo các hướng dẫn sau để thực thi bất cứ khi nào bạn mở dấu nhắc lệnh

  1. Tạo một lệnh tệp bó, ví dụ "my_conda.cmd", đặt nó vào thư mục Dữ liệu ứng dụng.
  2. Cấu hình nó để được bắt đầu tự động bất cứ khi nào bạn mở cmd. Cài đặt này nằm trong Sổ đăng ký:
    khóa: HKCU \ PHẦN MỀM \ Microsoft \
    Giá trị bộ xử lý lệnh :
    Loại AutoRun :
    dữ liệu REG_EXPAND_SZ : "% AppData% \ my_conda.cmd"

từ câu trả lời này: https://superuser.com/a/302553/143794


1
Cảm ơn rât nhiều. Tôi thấy rằng với phiên bản Mac của mình, tôi không thể thoát khỏi Python 2 - vì vậy đã làm theo hành động được đề xuất để thiết lập hai môi trường riêng biệt, nhưng thật khó chịu khi phải nhớ kích hoạt môi trường trên mỗi cửa sổ thiết bị đầu cuối mới. Những công việc này!
Livvy Jeffs

Điều này dẫn đến một đường ống bị hỏng và dấu nhắc lệnh đóng băng khi tôi thực hiện việc này trong Windows 10.
aaronsnoswell

Bất cứ ai trên Windows 10 có may mắn hơn với điều này?
Wassadamo

3
Đây phải là câu trả lời được chấp nhận (ít nhất là đối với Conda dựa trên unix)!
Simon Van Machin

50

Trong Linux, có một cách dễ dàng hơn để đặt môi trường mặc định bằng cách sửa đổi ~/.bashrchoặc ~/.bash_profile Cuối cùng, bạn sẽ tìm thấy một cái gì đó như

# added by Anaconda 2.1.0 installer
export PATH="~/anaconda/bin:$PATH"

Thay thế bằng

# set python3 as default
export PATH="~/anaconda/envs/python3/bin:$PATH"

và đó là tất cả để có nó.


3
Và câu hỏi là gì?
Dieter Meemken

Tôi đã thử giải pháp này, nhưng nó vẫn hiển thị anaconda2 trên con đường của tôi, có ý tưởng nào không?
William Ross

10
Điều này không đặt môi trường mặc định. Nó xuất hiện để phá vỡ conda và giả mạo rằng "python3" là mặc định. "Thông tin conda -e" vẫn hiển thị "root" như môi trường hiện tại. Tôi vẫn đang tìm cách để nói với conda là mặc định.
MrMas

8
Điều này không đặt môi trường mặc định theo quan điểm của conda. Nó xuất hiện để phá vỡ conda và giả mạo rằng "python3" là mặc định. "Thông tin conda -e" vẫn hiển thị "root" như môi trường hiện tại. Để khắc phục điều này, bạn cũng cần đặt CONDA_PREFIX và CONDA_DEFAULT_ENV. Ngay cả khi đó, câu trả lời vẫn là một hack; tại sao không chỉ chạy 'kích hoạt nguồn <môi trường mặc định mới>' vì điều này đã được cung cấp với conda như là cách "tích hợp" để thực hiện việc này.
MrMas

Có một .bashrchoặc .bash_profiletrên Windows 10? Tôi đã tìm thấy một cái dưới cygwin trong khi theo dõi jattenberg.github.io/PDS-Fall-2013/assets/install/ này . Nhưng tôi không chắc đó là những gì tôi nên thay đổi để có được chức năng mong muốn của OP.
Wassadamo

13

Đối với windows Anaconda đi kèm với Anaconda Prompt là lối tắt đến cmd và có thể được sử dụng để chạy các lệnh conda mà không cần thêm anaconda trong biến PATH. Tìm vị trí của nó, sao chép và đổi tên bản sao (giả sử myenv_prompt). Nhấp chuột phải vào myenv_prompt và chọn thuộc tính trong menu ngữ cảnh.

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

Các hình thức mục tiêu của cửa sổ Properties nên đã được lấp đầy với các văn bản, một cái gì đó giống như %windir%\system32\cmd.exe "/K" C:\Users\xxx\AppData\Local\Continuum\Miniconda3\Scripts\activate.bat C:\Users\xxx\AppData\Local\Continuum\Miniconda3\ có ba phần của lệnh này 1) bắt đầu ... \ cmd.exe 2) chạy ... \ acitvate.bat với môi trường 3) ... \ Miniconda3 \

Thay đổi phần thứ 3 thành đường dẫn của môi trường (giả sử myenv) mà bạn muốn làm mặc định, tức là điền vào mẫu Target giống như%windir%\system32\cmd.exe "/K" C:\Users\xxx\AppData\Local\Continuum\Miniconda3\Scripts\activate.bat C:\Users\xxx\AppData\Local\Continuum\Miniconda3\envs\myenv

Bây giờ myenv_prompt sẽ hoạt động như một phím tắt để bắt đầu cmd với myenv làm môi trường mặc định cho python. Phím tắt này bạn có thể giữ trong menu bắt đầu hoặc được ghim trong thanh tác vụ.

Một lợi thế của phương pháp này là bạn có thể tạo một vài phím tắt, mỗi môi trường có môi trường khác nhau làm môi trường mặc định. Ngoài ra, bạn có thể đặt thư mục mặc định bằng cách điền Bắt đầu ở dạng cửa sổ Thuộc tính

Hi vọng điêu nay co ich

PS: Không bắt buộc phải tìm Anaconda Prompt và có thể được thực hiện bằng cách thay đổi mục tiêu của bất kỳ phím tắt nào. Nhưng bạn sẽ cần biết đường dẫn của cmd.exe và activ.bat


2
Đây phải là câu trả lời hàng đầu
James McCormac

Tôi sử dụng phương pháp này, nhưng phần đầu tiên của tôi hơi khác một chút: C:\Windows\System32\cmd.exe /c start ""Không chắc tôi đã tìm ra giải pháp đó như thế nào, nhưng đây là một bài đăng tôi đã thực hiện về cú pháp
xtian

8

Thay đổi vĩnh viễn

conda install python={version}

Thay đổi tạm thời

Xem môi trường của bạn

chạy conda info --envstrên cửa sổ thiết bị đầu cuối của bạn hoặc Anconda Prompt

Nếu nó không hiển thị môi trường mà bạn muốn cài đặt

chạy conda create -n py36 python=3.6 anacondacho phiên bản thay đổi python 3.6 tùy thích

Kích hoạt môi trường (sử dụng dấu nhắc Anaconda)

chạy activate envnmeenvnme bạn có thể tìm thấy bằng lệnh này conda info --envslàm ví dụ khi bạn chạy conda info --envsnó hiển thị

base * C:\Users\DulangaHeshan\Anaconda3 py36 C:\Users\DulangaHeshan\Anaconda3\envs\py36

sau đó chạy activate py36

để kiểm tra chạy python --version

Trong Windows, cách tốt nhất là hủy kích hoạt một môi trường trước khi kích hoạt môi trường khác. https://docs.conda.io/projects/conda/en/latest/user-guide/t Nhiệm/manage-envirments.html?highlight=deac activate% 20en môi trường


3
Tôi nghĩ OP muốn một giải pháp thay đổi môi trường cơ bản thành py36 để họ không phải chạy activate py36mỗi khi khởi động.
Wassadamo

6

Câu trả lời đúng (kể từ tháng 12 năm 2018) là ... bạn không thể. Nâng cấp conda install python=3.6có thể hoạt động, nhưng có thể không nếu bạn có các gói cần thiết, nhưng không thể gỡ cài đặt.

Anaconda sử dụng một môi trường mặc định có tên basevà bạn không thể tạo môi trường mới (ví dụ python 3.6) có cùng tên. Đây là cố ý. Nếu bạn muốn Anaconda cơ sở của mình là python 3.6, cách đúng đắn để làm điều này là cài đặt Anaconda cho python 3.6. Là người quản lý gói, mục tiêu của Anaconda là làm cho các môi trường khác nhau được đóng gói, do đó tại sao bạn phải kích hoạt nguồn vào chúng và tại sao bạn không thể lặng lẽ chuyển gói cơ sở theo ý muốn vì điều này có thể dẫn đến nhiều vấn đề trên hệ thống sản xuất.


Điều gì xảy ra nếu môi trường cơ sở của tôi bị hỏng và tôi muốn thay thế nó bằng một môi trường hoạt động?
endolith

@endolith Điều gì xảy ra nếu môi trường cơ sở của tôi bị hỏng và tôi muốn thay thế nó bằng một môi trường hoạt động? Cài đặt lại Conda.
AMC

@AMC Tôi đã cài đặt lại rất nhiều lần. Tôi muốn có một cách để khôi phục lại trạng thái tốt mà không cần làm lại tất cả mọi thứ
endolith

1
@endolith Bạn đã cài đặt lại nhiều lần để khắc phục cùng một vấn đề chính xác? Làm thế nào mà nó kết thúc bị hỏng? Chúng ta nên thảo luận về điều này ở nơi khác, tôi đã tạo ra một phòng trò chuyện .
AMC

1

Tôi không hài lòng với bất kỳ câu trả lời nào được trình bày ở đây, vì việc kích hoạt một môi trường mất vài giây trên nền tảng của tôi (vì bất kỳ lý do gì)

Tôi đã sửa đổi biến đường dẫn của mình để môi trường tôi muốn mặc định được ưu tiên hơn mặc định thực tế.

Trong trường hợp của tôi, tôi đã sử dụng các lệnh sau để thực hiện điều đó cho môi trường "py35":

setx PATH "%userprofile%\Anaconda3\envs\py35\;%PATH%"
setx PATH "%userprofile%\Anaconda3\envs\py35\Scripts;%PATH%"

để tìm ra nơi môi trường của bạn được lưu trữ, kích hoạt nó và nhập where python. Tôi không chắc chắn nếu phương pháp này có bất kỳ nhược điểm. Vì nó cũng thay đổi đường dẫn mặc định của conda thực thi. Nếu đó là trường hợp, xin vui lòng bình luận.


1

Tôi đã nhận được điều này khi cài đặt một thư viện bằng cách sử dụng anaconda. Phiên bản của tôi đã chuyển từ Python 3. * sang 2.7 và rất nhiều thứ của tôi đã ngừng hoạt động. Giải pháp tốt nhất tôi tìm thấy là lần đầu tiên thấy phiên bản mới nhất hiện có:

conda search python

Sau đó cập nhật lên phiên bản bạn muốn:

conda install python=3.*.*

Nguồn: http://chris35wills.github.io/conda_python_version/

Các lệnh hữu ích khác:

conda info
python --version

Phiên bản của tôi đã chuyển từ Python 3. * sang 2.7 và rất nhiều thứ của tôi đã ngừng hoạt động. Trừ khi tôi thiếu một cái gì đó, điều này dường như không liên quan đến câu hỏi và những gì được mô tả trong OP.
AMC

0

Tạo một lối tắt của dấu nhắc anaconda trên máy tính để bàn hoặc thanh tác vụ, sau đó trong các thuộc tính của phím tắt đó, hãy đảm bảo bạn sửa đổi đường dẫn cuối cùng trong "Target:" thành đường dẫn của môi trường ur:

C: \ Users \ BenBouali \ Anaconda3 \ SILL THAY ĐỔI VÀO C: \ Users \ BenBouali \ Anaconda3 \ envs \ tenorflow-gpu

xem trước

và bằng cách này bạn có thể sử dụng phím tắt đó để mở một môi trường nhất định khi nhấp vào nó, bạn cũng có thể thêm nó vào đường dẫn của bạn và bây giờ bạn sẽ có thể chạy nó từ hộp chạy windows bằng cách chỉ cần gõ tên của phím tắt.


0

Trên Windows, tạo một tệp bó với dòng sau:

start cmd /k "C:\Anaconda3\Scripts\activate.bat C:\Anaconda3 & activate env"

Đường dẫn đầu tiên có trong dấu ngoặc kép là đường dẫn đến tệp activ.bat trong bản cài đặt Anaconda. Đường dẫn trên hệ thống của bạn có thể khác. Tên theo lệnh kích hoạt tất nhiên phải là tên môi trường mong muốn của bạn.

Sau đó chạy tệp bó khi bạn cần mở dấu nhắc Anaconda.


0

Tải môi trường "cơ sở" của bạn - dưới dạng OP py34- khi bạn tải thiết bị đầu cuối / vỏ của mình.

Nếu bạn sử dụng Bash, hãy đặt dòng:

conda activate py34

trong .bash_profile(hoặc .bashrc) của bạn :

$ echo 'conda activate py34' >> ~/.bash_profile

Mỗi khi bạn chạy một thiết bị đầu cuối mới, môi trường conda py34sẽ được tải.

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.