Я использую Anaconda и настраиваю виртуальные среды, и я хотел бы знать, существует ли массовая операция для копирования пакетов только из одной среды (A) в другую (B), если имя пакета в ( А) нет в (Б). Я вижу документацию по копированию всей среды, но мои настройки сильно зависят от контроля версий, и я не хочу ничего перезаписывать, даже если в среде (B) появляется предыдущая версия пакета.
Копирование всей среды и установка пакетов один за другим - это то, чем я занимался до сих пор.
#Install one-by-one in Anaconda Prompt
conda create --name package_name python=3.7 -y #-y defaults "y" to all subsequent prompts
conda install package_name
#Create new environment with packages (in one line)
conda create --name environment_name python=3.7 pandas=0.24.2 scipy
#Make a clone of an existing environment on the same machine
conda create -n flowers --clone snowflakes
#Duplicate an existing environment on a different machine
#Save packages for future use:
conda list --export > package_list.txt
#Reinstall packages from the export file:
conda create -n environment_name --file package_list.txt
#Duplicate an existing environment on a different machine (with different syntax)
#Save packages for future use:
conda env export --no-builds > file.txt
#Reinstall packages from the export file:
conda env create --file /path/to/file.txt
Сценарий 1 - это простой метод, который определенно работает, но очень утомителен
Сценарий 2 также прост, но он копирует только существующую среду. Я хочу иметь две существующие среды, и если я хочу скопировать все новые уникальные пакеты из одной среды в другую, мне не нужно создавать целую новую среду, а затем тщательно удалять все, основываясь на версия пакета.
Сценарий 3 получает тот же результат, что и Сценарий 2, но на другом компьютере.
Если я смогу найти способ перебрать среду A и скопировать только пакеты, которые не встречаются в среде B (это означает, что более старая версия пакета в среде B не будет перезаписана), это решит мою проблему .