Anaconda xuất môi trường tập tin


129

Làm cách nào tôi có thể tạo tệp môi trường anaconda có thể được sử dụng trên các máy tính khác?

Tôi đã xuất môi trường trăn anaconda của mình sang YML bằng cách sử dụng conda env export > environment.yml. Xuất khẩu environment.ymlchứa dòng prefix: /home/superdev/miniconda3/envs/juicyenvnày ánh xạ đến vị trí của Anaconda của tôi sẽ khác với các chiếc khác.


7
Tôi mới thực hiện một số thử nghiệm và nghĩ rằng tôi đã tìm thấy tiền tố bị bỏ qua ... không biết tại sao nó lại xuất trong env. Bạn có thể làm conda env create -f environment.yml như một bên, theo kinh nghiệm của tôi, điều này sẽ không hoạt động trên các nền tảng, bởi vì conda env sẽ liệt kê nhiều phụ thuộc như `vs2015_r nb` nếu bạn ở trên Windows. Nhưng tất nhiên điều đó không có sẵn trên linux.
Alex G Rice

4
Conda thực sự khuyên bạn nên tạo environment.ymltệp bằng tay, vì vậy bạn có thể bỏ nó ra - xem stackoverflow.com/questions/39280638/ Kẻ
Brian Burns

Câu trả lời:


177

Tôi không thể tìm thấy bất cứ điều gì trong condathông số kỹ thuật cho phép bạn xuất tệp môi trường mà không có prefix: ...dòng. Tuy nhiên, như Alex đã chỉ ra trong các bình luận, conda dường như không quan tâm đến dòng tiền tố khi tạo môi trường từ tệp.

Với ý nghĩ đó, nếu bạn muốn người dùng khác không có kiến ​​thức về đường dẫn cài đặt mặc định của mình, bạn có thể xóa dòng tiền tố greptrước khi viết environment.yml.

conda env export | grep -v "^prefix: " > environment.yml

Dù bằng cách nào, người dùng khác sau đó chạy:

conda env create -f environment.yml

và môi trường sẽ được cài đặt trong đường dẫn môi trường conda mặc định của chúng.

Nếu bạn muốn chỉ định một đường dẫn cài đặt khác với mặc định cho hệ thống của bạn (không liên quan đến 'tiền tố' trong môi trường.yml), chỉ cần sử dụng -pcờ theo sau là đường dẫn bắt buộc.

conda env create -f environment.yml -p /home/user/anaconda3/envs/env_name

Lưu ý rằng Conda khuyên bạn nên tạo environment.ymlbằng tay, điều này đặc biệt quan trọng nếu bạn muốn chia sẻ môi trường của mình trên các nền tảng (Windows / Linux / Mac). Trong trường hợp này, bạn chỉ có thể rời khỏi prefixdòng.


1
... trứng tuyệt vời! 👍
Ahi Tuna

44

Cách dễ nhất để lưu các gói từ một môi trường được cài đặt trong một máy tính khác là:

$ conda list -e > req.txt

sau đó bạn có thể cài đặt môi trường bằng cách sử dụng

$ conda create -n new environment --file req.txt

nếu bạn sử dụng pip, vui lòng sử dụng các lệnh sau: tham khảo https://pip.pypa.io/en/urdy/reference/pip_freeze/

$ env1/bin/pip freeze > requirements.txt
$ env2/bin/pip install -r requirements.txt

Đẹp, nhưng nó dường như không hoạt động với các gói cài đặt pip, tuy nhiên.
Bàn Bobby nhỏ

1
cảm ơn bạn Tôi vừa cập nhật dựa trên tài liệu tham khảo đã cho
javac

Tôi đã sử dụng cả Anaconda Navigator và pip (từ trong môi trường) để cài đặt mọi thứ. Bạn muốn giới thiệu tôi sử dụng cái gì? Cả hai lệnh?
DA

Tôi nghĩ tốt hơn là sử dụng lệnh conda trong môi trường Anaconda, bạn cũng có thể sử dụng pip nếu cần
javac

9
  • Linux

    xuất khẩu ena env - không xây dựng | grep -v "tiền tố"> môi trường.yml

  • các cửa sổ

    xuất khẩu ena env - không xây dựng | findstr -v "tiền tố"> môi trường.yml


Đặt vấn đề: Theo mặc định, conda env exportbao gồm thông tin bản dựng:

$ conda env export
...
dependencies:
  - backcall=0.1.0=py37_0
  - blas=1.0=mkl
  - boto=2.49.0=py_0
...

Thay vào đó, bạn có thể xuất môi trường của mình mà không cần xây dựng thông tin:

$ conda env export --no-builds
...
dependencies:
  - backcall=0.1.0
  - blas=1.0
  - boto=2.49.0
...

Điều này mở ra môi trường từ phiên bản Python và HĐH.


1
Tôi đồng ý rằng đây là một câu trả lời tốt, nhưng hãy xem xét thêm một số chi tiết về lý do tại sao loại trừ thông tin bản dựng lại hữu ích cho việc chuyển env trên các nền tảng.
Merv

Đã kết thúc bằng cách sử dụng này, nhưng ý tưởng tuyệt vời @merv. Đã làm điều đó.
François Leblanc

Thật không may, điều này sẽ không luôn luôn hoạt động khi cài đặt xuất và cài đặt lại trên các hệ điều hành khác nhau.
Sören

2

Tôi thấy việc xuất các gói ở định dạng chuỗi chỉ mang tính di động hơn là xuất toàn bộ condamôi trường. Như câu trả lời trước đã được đề xuất:

$ conda list -e > requirements.txt

Tuy nhiên, phần này requirements.txtchứa các số bản dựng không khả chuyển giữa các hệ điều hành, ví dụ giữa MacUbuntu. Trong conda env exportchúng tôi có tùy chọn --no-buildsnhưng không có conda list -e, vì vậy chúng tôi có thể xóa số bản dựng bằng cách ban hành lệnh sau:

$ sed -i -E "s/^(.*\=.*)(\=.*)/\1/" requirements.txt 

Và tạo lại môi trường trên một máy tính khác:

conda create -n recreated_env --file requirements.txt 

sedlệnh làm việc khá tốt đẹp. Tôi đã phải xóa một phiên bản vá. Vì vậy, major.minor.patchđể major.minorvà nó làm việc. Hóa ra, số bản vá thấp hơn đã bị giảm bởi các repos chính.
Lucas

1
  1. Trước tiên hãy kích hoạt môi trường conda của bạn (người bạn muốn xuất / sao lưu)
conda activate myEnv
  1. Xuất tất cả các gói thành một tệp (myEnvBkp.txt)
conda list --explicit > myEnvBkp.txt
  1. Khôi phục / nhập môi trường:
conda create --name myEnvRestored --file myEnvBkp.txt
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.