Настройте AWS Cloud9 для использования среды Anaconda Python
Я хочу, чтобы AWS Cloud9 использовал версию Python и определенные пакеты из моей среды Anaconda Python. Как мне этого добиться? Где искать в настройках или конфигурации?
Моя текущая настройка: у меня есть экземпляр AWS EC2 с Ubuntu Linux, и я настроил AWS Cloud9 для работы с экземпляром EC2.
У меня установлена Anaconda на экземпляр EC2, и я создал для использования среду Python3 conda, но Cloud9 всегда хочет использовать версию Python3 моей системы Linux.
4 ответа
Наконец-то я нашел то, что заставляет AWS Cloud9 использовать версию Python3, установленную в моей среде Anaconda на моем экземпляре AWS EC2.
Инструкции по созданию настраиваемого приложения AWS Cloud9 для Python находятся здесь:
{
"cmd" : ["/home/ubuntu/anaconda3/envs/ijackweb/bin/python3.6", "$file", "$args"],
"info" : "Running $project_path$file_name...",
"selector" : "source.py"
}
Я просто создаю нового бегуна и вставляю туда приведенный выше код, и Cloud9 запускает мое приложение с версией Python3 для моей среды Anaconda.
Единственное, что я не понимаю в приведенном выше коде, это то, что делает строка "selector": "source.py".
После некоторого тестирования я понял, что мой предыдущий ответ не позволяет вам использовать отладчик. Основываясь на ответе @Sean_Calgary (который лучше, чем мой исходный ответ), вы можете отредактировать один из встроенных бегунов python (опять же, просто заменив вызов python полным путем к пути python conda env), например:
{
"script": [
"if [ \"$debug\" == true ]; then ",
" /home/tg/miniconda/envs/env-name/bin/python -m ikp3db -ik_p=15471 -ik_cwd=$project_path \"$file\" $args",
"else",
" /home/tg/miniconda/envs/env-name/bin/python \"$file\" $args",
"fi",
"checkExitCode() {",
" if [ $1 ] && [ \"$debug\" == true ]; then ",
" /home/tg/miniconda/envs/env-name/bin/python -m ikp3db 2>&1 | grep -q 'No module' && echo '",
" To use python debugger install ikpdb by running: ",
" sudo yum update;",
" sudo yum install python36-devel;",
" sudo pip-3.6 install ikp3db;",
" '",
" fi",
" return $1",
"}",
"checkExitCode $?"
],
"python_version": "python3",
"working_dir": "$project_path",
"debugport": 15471,
"$debugDefaultState": false,
"debugger": "ikpdb",
"selector": "^.*\\.(py)$",
"env": {
"PYTHONPATH": "$python_path"
},
"trackId": "Python3"
}
Для этого просто нажмите на "бегунов" рядом с CWD в правом нижнем углу -> python3 -> редактировать бегунок -> сохранить как env-name.run в /.c9/runners (это должно указывать на вас в правый каталог по умолчанию).
NB
- Заменить
env-name
с именем вашей среды повсюду. - Вам понадобится пакет для отладчика, установленный в вашем conda env. Это называется
ikp3db
. - Возможно, вам потребуется проверить путь к исполняемому файлу python conda envs, активировав среду и запустив
which python
(он поймал меня, потому что мой путь закончился/python
не/python3.6
, даже если установлен python 3.6)
Вы можете использовать бегун типа "сценарий оболочки". Для этого вам нужно:
- создайте свой conda env с python3 и любыми пакетами и т. д., которые вы хотите в нем. Назови это
py3env
- создайте каталог для хранения ваших скриптов бегуна, что-то вроде
$HOME/c9_runner_scripts
поместите туда сценарий под названием
py3env_runner.sh
бегун с кодом вроде:conda activate py3env python ~/c9/my_py3_script.py
Затем создайте конфигурацию запуска с типом бегуна 'shell script' и введите
c9_runner_scripts/py3env_runner.sh
для меня на centos 7 единственный способ выполнить с моим conda python v 3.9.4 - добавить строку активации conda в мой .bash_profile следующим образом:
conda активировать /var/www/my_conda/python3.9
Затем в Cloud 9, когда я запускаю свой код под своим conda python 3.9 env, все в порядке.
Это мой простой код Python, который распечатает текущую версию Python.
import sys
print(sys.version)
Лучший.