як вказати нове розташування середовища для створення конда


107

типовим розташуванням пакетів є папка .conda у моєму домашньому каталозі. однак на сервері, яким я користуюся, існує дуже суворе обмеження, скільки місця я можу використовувати, що в основному уникає мене поміщати що-небудь під свій домашній каталог. як я можу вказати місце для віртуального середовища, яке я хочу створити? Дякую! сервер працює під керуванням Ubuntu.


9
Щось не так із відповіддю або чому ви її не прийняли? Ви завжди можете залишати коментарі, якщо щось вам не подобається.
Буратіно

3
@linX Завжди переконайтеся, що ви підтримали відповіді, які вам подобаються, і прийміть відповідь, яка найкраща або яка вирішує вашу проблему. Це дає авторам незначну нагороду та спонукає їх продовжувати давати продумані та корисні відповіді.
Майк Вільямсон

Відповіді:


120

Використовуйте параметр --prefixабо, -pщоб вказати, куди писати файли середовища. Наприклад:

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

Створить середовище з іменем, /tmp/test-envяке розміщується /tmp/замість типового .conda.


6
але коли ви переїхали в місцезнаходження env, як conda знає, як знайти, де знаходиться нова env?
Буратіно,

4
у каталозі ~ / .conda / envs є каталог для кожного середовища. Дотримуйтесь вказівок інших і використовуйте --prefix, щоб встановити де завгодно. Потім створіть символічне посилання з одного на інший: ln -s / shared / eng / conds / envs / test-env ~ / .conda / envs / test-env
Robert Lugg

1
чому не conda create --name hbf_env --prefix /om2/user/username python=3.6 працює? каже -bash: /home/username/.conda/envs/hbf_env/bin/conda: No such file or directory?
Charlie Parker

7
Чарлі, я не впевнений, чому ти отримав повідомлення про помилку про відсутність файлу / каталогу, але, незалежно від цього, --nameне можна використовувати --prefix. Припускаючи, що conda встановлено правильно, відповідна команда буде conda create --prefix /om2/user/username/hbf_env python=3.6. Це створило б env hbf_envз місцем проживання/om2/user/username/
Thomas Fauskanger

9
@ThomasFauskanger схоже на те, що команда префікса не створює імені для середовища, принаймні для мене .. Після того, як conda create --prefix hbf_envу локальному каталозі, conda info --envsдля імені відображається порожнє, але відображається повний шлях ... активація середовища вимагає, щоб я набрав повний шлях (conda не може знайти середовище, якщо я просто вводжу ім'я)
Джошуа Застров

53

як сказав Павло, використовуйте

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

якщо ви знаходитесь у папці, в якій ви хочете створити своє віртуальне середовище, просто опустіть шлях і використовуйте

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

conda слідкуйте лише за оточеннями, що входять до папки envs всередині папки anaconda. Наступного разу вам потрібно буде активувати нову env, перейдіть до папки, де ви її створили, і активуйте за допомогою

source activate yourEnvName

2
Зверніть увагу, що якщо ви забули ім'я середовища, ви можете використовувати
ПОЛНИЙ

2
Ви можете сказати conda шукати envs в інших місцях, використовуючи .condarcфайл конфігурації. conda.io/docs/user-guide/configuration/…
суворий

Це створює середовище без імені, лише каталог. Чи є спосіб створити ім'я в операторі? Конда не дозволить мені вказати обидва.
Kyouma

14

Поки використання --prefixопції працює, вам доведеться явно використовувати її кожного разу, коли ви створюєте середовище. Якщо ви просто хочете, щоб ваші середовища зберігалися десь за замовчуванням, ви можете налаштувати їх у своєму .condarcфайлі.

Будь ласка , дивіться: https://conda.io/docs/user-guide/configuration/use-condarc.html#specify-environment-directories-envs-dirs


4
Якщо ви ще не змінили цю змінну, ви можете налаштувати її, виконавши одну команду:conda config --append envs_dirs /path/to/envs
Arthur Tacca

4
Також додайте env_prompt: ({name})до ~ / .condarc, якщо ви отримаєте повний шлях у своєму запиті.
plonker13

12

Якщо ви хочете використовувати аргументи --prefixабо -p, але не хочете використовувати повний шлях середовища для його активації, вам потрібно відредагувати .condarcфайл конфігурації, перш ніж створювати середовище.

.condarcФайл знаходиться в домашньому каталозі; C:\Users\<user>у Windows. Відредагуйте значення під envs_dirsключем, щоб включити спеціальний шлях для вашого середовища. Якщо припустити, що власний шлях є D:\envs, файл повинен виглядати приблизно так:

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

Потім, коли ви створюєте нове середовище на цьому шляху, його назва з’явиться разом із шляхом під час запуску conda env list, і ви повинні мати можливість активувати його, використовуючи лише ім’я, а не повний шлях.

Знімок екрана командного рядка

Таким чином, якщо ви редагуєте, .condarcщоб включити D:\envs, а потім запустити conda env create -p D:\envs\myenv python=x.x, тоді activate myenv(або source activate myenvна Linux) має працювати.

Сподіваюся, це допоможе!

PS Я натрапив на це шляхом спроб і помилок. Я думаю, що відбувається, коли ви редагуєте envs_dirsключ, оновлення conda, ~\.conda\environments.txtщоб включити середовища, знайдені у всіх каталогах, зазначених у envs_dirs, щоб вони могли отримати доступ без використання абсолютних шляхів.


8

Ви можете створити його таким чином

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

і вам не потрібно переходити до цієї папки, щоб її активувати.

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

Як бачите, я роблю це так.

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
Хоча ОП заявив, що вони використовують Ubuntu, +1 за те, що він також пропонує рішення на машині Windows. :)
Майк Вільямсон

2

Я потрапив у подібну ситуацію. Я мав доступ до великого накопичувача даних. Залежно від вашої ситуації та доступу до сервера, який ви можете розглянути

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

Потім наступні команди conda перенесуть дані в символьно зв’язаний каталог в datavol


На мою думку, це справді правильна відповідь - спочатку питання стосувалося місця розміщення пакунків і має певну неоднозначність, але нещодавно я зіткнувся з цим питанням і трохи дослідив. Є два важливих директорії під $HOME/.conda, envsі pkgs. Використання --prefixвищезазначеної схеми створює середовище де-небудь ще, але всі файли завантаження пакунків все одно йдуть $HOME/.conda/pkgs. Запропоноване тут рішення для посилання виправляє як середовище, так і місця завантаження.
Ендрю Рід,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.