cách chỉ định vị trí môi trường mới để tạo chung cư


107

vị trí mặc định cho các gói là thư mục .conda trong thư mục chính của tôi. tuy nhiên, trên máy chủ mà tôi đang sử dụng, có một giới hạn rất nghiêm ngặt về dung lượng mà tôi có thể sử dụng, điều này về cơ bản tránh cho tôi đặt bất cứ thứ gì vào thư mục chính của mình. làm cách nào để chỉ định vị trí cho môi trường ảo mà tôi muốn tạo? Cảm ơn! máy chủ đang chạy Ubuntu.


9
Có điều gì sai trong câu trả lời hoặc tại sao bạn chưa chấp nhận nó? Bạn luôn có thể để lại bình luận nếu có điều gì đó bạn không thích.
Pinocchio

3
@linX Luôn đảm bảo ủng hộ các câu trả lời bạn thích và chấp nhận câu trả lời tốt nhất hoặc giải quyết được vấn đề của bạn. Điều này mang lại cho các tác giả một giải thưởng nhỏ và khuyến khích họ tiếp tục đưa ra những câu trả lời có suy nghĩ tốt và hữu ích.
Mike Williamson

Câu trả lời:


121

Sử dụng tùy chọn --prefixhoặc -pđể chỉ định nơi ghi các tệp môi trường. Ví dụ:

conda create --prefix /tmp/test-env python=2.7

Sẽ tạo môi trường được đặt tên /tmp/test-envtrong /tmp/đó thay vì mặc định .conda.


6
nhưng khi bạn đã di chuyển vị trí của env, làm thế nào conda biết cách tìm env mới đó ở đâu?
Pinocchio

4
có một thư mục cho mỗi môi trường bên trong ~ / .conda / envs. Làm theo hướng dẫn của người khác và sử dụng --prefix để cài đặt ở bất cứ đâu bạn muốn. Sau đó tạo một liên kết tượng trưng từ một đến khác: ln -s / chia sẻ / eng / conds / envs / test-env ~ / .conda / envs / test-env
Robert lugg

1
tại sao không conda create --name hbf_env --prefix /om2/user/username python=3.6 hoạt động? nói -bash: /home/username/.conda/envs/hbf_env/bin/conda: No such file or directory?
Charlie Parker

7
Charlie, tôi không chắc tại sao bạn nhận được thông báo lỗi về việc thiếu tệp / thư mục, nhưng bất kể điều đó, --namekhông thể sử dụng với --prefix. Giả sử conda được cài đặt đúng, lệnh tương ứng sẽ là conda create --prefix /om2/user/username/hbf_env python=3.6. Điều này sẽ tạo ra một env tên hbf_envở vị trí/om2/user/username/
Thomas Fauskanger

9
@ThomasFauskanger có vẻ như lệnh tiền tố không tạo tên cho môi trường, ít nhất là đối với tôi .. Sau khi conda create --prefix hbf_envtrong thư mục cục bộ, conda info --envshiển thị trống cho tên nhưng hiển thị đường dẫn đầy đủ ... việc kích hoạt môi trường bắt buộc tôi phải nhập đường dẫn đầy đủ (conda không thể tìm thấy môi trường nếu tôi chỉ cần gõ tên)
Joshua Zastrow

53

như Paul đã nói, sử dụng

conda create --prefix=/users/.../yourEnvName python=x.x

nếu bạn đang ở trong thư mục mà bạn muốn tạo môi trường ảo, chỉ cần bỏ qua đường dẫn và sử dụng

conda create --prefix=yourEnvName python=x.x

conda chỉ theo dõi các môi trường có trong thư mục envs bên trong thư mục anaconda. Lần tiếp theo, bạn sẽ cần kích hoạt env mới của mình, hãy chuyển đến thư mục nơi bạn đã tạo và kích hoạt nó bằng

source activate yourEnvName

2
Lưu ý rằng nếu bạn quên tên môi trường, bạn có thể sử dụng đường dẫn ĐẦY ĐỦ của thư mục chứa môi trường của bạn
tjb

2
Bạn có thể yêu cầu conda tìm kiếm env ở các vị trí khác bằng cách sử dụng .condarctệp cấu hình. conda.io/docs/user-guide/configuration/…
Khắc nghiệt

Điều này tạo ra một môi trường không có tên, chỉ có thư mục. Có cách nào để tạo tên trong câu lệnh không? Conda sẽ không để tôi chỉ định cả hai.
Kyouma

15

Trong khi sử dụng --prefixtùy chọn hoạt động, bạn phải sử dụng nó một cách rõ ràng mỗi khi bạn tạo môi trường. Nếu bạn chỉ muốn môi trường của mình được lưu trữ ở một nơi khác theo mặc định, bạn có thể định cấu hình nó trong .condarctệp của mình .

Vui lòng xem: https://conda.io/docs/user-guide/configuration/use-condarc.html#specify-enosystem-directories-envs-dirs


5
Nếu bạn chưa thay đổi biến này, bạn có thể cấu hình nó bằng cách chạy một lệnh này:conda config --append envs_dirs /path/to/envs
Arthur Tacca

5
Cũng thêm env_prompt: ({name})vào ~ / .condarc nếu bạn nhận được đường dẫn đầy đủ trong lời nhắc của mình.
plonker 13

12

Nếu bạn muốn sử dụng các đối số --prefixhoặc -p, nhưng muốn tránh phải sử dụng đường dẫn đầy đủ của môi trường để kích hoạt nó, bạn cần chỉnh sửa .condarctệp cấu hình trước khi tạo môi trường.

Các .condarctập tin trong thư mục nhà; C:\Users\<user>trên Windows. Chỉnh sửa các giá trị trong envs_dirskhóa để bao gồm đường dẫn tùy chỉnh cho môi trường của bạn. Giả sử đường dẫn tùy chỉnh là D:\envs, tệp cuối cùng sẽ trông giống như sau:

ssl_verify: true
channels:
  - defaults
envs_dirs:
  - C:\Users\<user>\Anaconda3\envs
  - D:\envs

Sau đó, khi bạn tạo một môi trường mới trên đường dẫn đó, tên của nó sẽ xuất hiện cùng với đường dẫn khi bạn chạy conda env listvà bạn có thể kích hoạt nó chỉ bằng tên chứ không phải đường dẫn đầy đủ.

Ảnh chụp màn hình dòng lệnh

Tóm lại, nếu bạn chỉnh sửa .condarcđể bao gồm D:\envsvà sau đó chạy conda env create -p D:\envs\myenv python=x.x, thì activate myenv(hoặc source activate myenvtrên Linux) sẽ hoạt động.

Hy vọng rằng sẽ giúp!

Tái bút Tôi tình cờ gặp điều này thông qua thử nghiệm và sai lầm. Tôi nghĩ điều gì xảy ra là khi bạn chỉnh sửa envs_dirskhóa, cập nhật chung cư ~\.conda\environments.txtđể bao gồm các môi trường được tìm thấy trong tất cả các thư mục được chỉ định trong envs_dirs, để chúng có thể được truy cập mà không cần sử dụng đường dẫn tuyệt đối.


8

Bạn có thể tạo nó như thế này

conda create --prefix C:/tensorflow2 python=3.7

và bạn không cần phải di chuyển đến thư mục đó để kích hoạt nó.

# To activate this environment, use:
# > activate C:\tensorflow2

Như bạn thấy, tôi làm điều đó như thế này.

D:\Development_Avector\PycharmProjects\TensorFlow>activate C:\tensorflow2

(C:\tensorflow2) D:\Development_Avector\PycharmProjects\TensorFlow>

(C:\tensorflow2) D:\Development_Avector\PycharmProjects\TensorFlow>conda --version
conda 4.5.13

1
Trong khi OP cho biết họ đang sử dụng Ubuntu, +1 vì cũng cung cấp giải pháp trên máy Windows. :)
Mike Williamson

2

Tôi đã gặp phải một tình huống tương tự. Tôi đã có quyền truy cập vào một ổ đĩa dữ liệu lớn hơn. Tùy thuộc vào tình huống của bạn và quyền truy cập vào máy chủ mà bạn có thể xem xét

ln -s /datavol/path/to/your/.conda /home/user/.conda

Sau đó, các lệnh conda tiếp theo sẽ đưa dữ liệu vào dir được liên kết biểu tượng trong datavol


Đây là câu trả lời thực sự đúng, theo ý kiến ​​của tôi - câu hỏi ban đầu là về vị trí cho các gói và có một số mơ hồ, nhưng gần đây tôi đã gặp vấn đề này và đã điều tra một chút. Có hai thư mục quan trọng bên dưới $HOME/.conda, envspkgs. Sử dụng --prefixlược đồ được đề cập ở trên xây dựng môi trường ở một nơi khác, nhưng tất cả các tệp gói tải xuống vẫn được chuyển đến $HOME/.conda/pkgs. Giải pháp liên kết biểu tượng được cung cấp ở đây sửa cả môi trường vị trí tải xuống.
Andrew Reid
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.