#python #django #conda #wagtail
#python #django #conda #трясогузка
Вопрос:
Поэтому я хочу иметь возможность создавать среду, содержащую все библиотеки, которые мне нужны для моего проекта, который я собираюсь перенести в Docker.
Пока мой yml выглядит так:
name: wt
channels:
- anaconda
- conda-forge
- defaults
dependencies:
- python=3.7.*
- django=3.1.1
- wagtail=2.11
Итак, судя по ссылке на совместимость, у меня есть правильные версии для запуска Wagtail, но когда я вызываю goto conda env create -f environment.yml
, я получаю:
ResolvePackageNotFound:
- wagtail=2.11
Итак, я просмотрел репозиторий Conda и не вижу версии 2.11. Как я могу получить версию 2.11, когда могу получить только с v1 или v 2.7, которые оба несовместимы?
Я проверил Wagtail Github, и они находятся на версии 2.7, но в версии 2.1 есть LTS, и именно поэтому я хотел бы его использовать.
Комментарии:
1. Разве вам не нужен оператор сравнения (
==
) при указании версии пакета, а не присваивания (=
), как у вас есть?2. @pavel В Pip вам нужен double == но, исходя из документации, вам нужен только один = docs.conda.io/projects/conda/en/latest/user-guide/tasks /…
3. Достаточно справедливо. Я не использовал файлы yml для настройки среды. Если по какой-то причине yaml не работает, почему бы вам не исключить wagtail из вашего файла среды, а затем попытаться установить версию 2.1 в среду, используя conda или pip?
4. Потому что я думаю, что я только что исправил это!
5. О, тогда поздравляю!
Ответ №1:
Хорошо, документация для создания conda env немного неоднозначна, поэтому я сделаю clone amp; push позже, чтобы исправить это. Итак, ниже приведен пример файла того, что, как я обнаружил, вы можете сделать с помощью environment.yml.
name: environment-name
channels:
- anaconda
- conda-forge
- defaults
dependencies:
- python=3.7.*
- django=3.1.1
- pip
- pip:
- wagtail==2.11.*
Имя:
Ссылочное имя среды.
Каналы:
Это репозитории в CondaCloud, которые Conda ищет при установке, пример здесь . Пожалуйста, обратите внимание, что «канал» означает имя пользователя владельца пакета.
зависимости:
Пакет, который вы хотите установить, может содержать или не содержать номера версий. если вы хотите объявить номер версии после второго / третьего / четвертого десятичного знака, но не десятичного знака X, вы можете использовать подстановочный знак ‘*’ для указания любого. Вы также можете включить Pip, но сначала убедитесь, что вы включили его как Conda dependancy . Также стоит упомянуть, что Conda использует один ‘=’, а Pip использует два ‘==’ при указании номера версии.
Комментарии:
1. Несколько советов:
anaconda
канал — это подмножествоdefaults
, поэтому вам не нужны оба. Как правило, если вам это понадобитсяconda-forge
, приоритет должен быть отданdefaults
/anaconda
. Вам не нужен.*
Python 3.7 спецификации to; простоpython=3.7
он более идиоматичен. Не уверен, почему вы включаете версию исправления вdjango
спецификацию. Это понадобится только в том случае, если вы планируете использоватьconda (install|update)
команды позже и хотите сохранить эту конкретную версию заблокированной. Как правило, если начинать с YAML, то последующие изменения в env должны быть опосредованы редактированием YAML, а затем воссозданием.