Запуск приложения flask, которое использует несколько сред conda - PullRequest
0 голосов
/ 09 марта 2020

Как видно из заголовка, я хочу запустить несколько приложений conda из приложения 1 flask, чтобы на некоторых страницах использовалась 1 версия пакетов, а на других - другая версия пакетов.

В качестве альтернативы мог сделать что-то, когда я запускаю 2 приложения одновременно, а затем должен был бы иметь возможность правильно перенаправить с одного на другое.

Я искал inte rnet и ничего не нашел. Какие-нибудь идеи / документация о том, с чего начать?

РЕДАКТИРОВАТЬ Мне сказали, что это плохая идея, и я хотел бы подробно остановиться на проблеме, а не на своем попытке ее решения

Проблема в том, что у меня есть определенные пакеты, которые я пытаюсь взаимодействовать с 2 разными моделями ML, которые были сделаны в разных версиях Scikit. Я не могу воссоздать модель, потому что она была дана мне коллегой. Кроме того, я выполняю сопоставление имен с помощью fuzzywuzzy, что вызывает проблемы с другими необходимыми мне пакетами.

1 Ответ

1 голос
/ 10 марта 2020

Вы можете сделать то, что вы просите, установив обе версии в разные места (чтобы они не перезаписывали друг друга), а затем переименовать пакет, так как это, кажется, ваш единственный вариант.

Возьмите В следующем примере я собираюсь настроить 2 виртуальные среды, в первой я установлю scitkit-learn 0.22.2, а во второй я установлю 0.20.4, затем переместу имя пакета, чтобы python могла различать и напечатайте версию ($ обозначает что-то для ввода в командной строке):

$ python3 -m venv sk1
$ source sk1/bin/activate
$ pip3 install scikit-learn==0.22.2 # install to venv 1
$ deactivate # leave

$ python3 -m venv sk2
$ source sk2/bin/activate
$ pip3 install scikit-learn==0.20.4 # install to venv 2
$ deactivate

# move the package names
$ mv ./sk1/lib/python3.7/site-packages/sklearn ./sk1/lib/python3.7/site-packages/sklearn0222

$ mv ./sk2/lib/python3.7/site-packages/sklearn ./sk2/libpython3.7/site-packages/sklearn0204

# add both of them to your PYTHONPATH
$ export PYTHONPATH=$PYTHONPATH:$(pwd)/sk1/lib/python3.7/site-packages/sklearn0222
$ export PYTHONPATH=$PYTHONPATH:$(pwd)/sk2/lib/python3.7/site-packages/sklearn0204

Теперь давайте go в интерпретатор python, импортируем их:

$ python3
>>> import sklearn0222 as sk0222
>>> import sklearn0204 as sk0204
>>> sk0222.__version__
'0.22.2'
>>> sk0204.__version__
'0.20.4'

При этом для запуска будет использоваться код, указанный в версии пакетов c, но при обращении к каждому из них необходимо быть СУПЕР ОСТОРОЖНЫ, и вы не можете использовать оба пакета в одном модуле. поэтому в mymodule1.py вы можете импортировать sklearn0222 и использовать его подмодули, а в mymodule2.py вы можете импортировать sklearn0204 и использовать его подмодули, но если вы попытаетесь использовать оба в одном и том же модуле в вашей программе, второй не будет распознан.

Опять же, это плохая идея, но это способ получить то, что вы ищете.

...