Настройте 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

  1. Заменить env-name с именем вашей среды повсюду.
  2. Вам понадобится пакет для отладчика, установленный в вашем conda env. Это называетсяikp3db.
  3. Возможно, вам потребуется проверить путь к исполняемому файлу python conda envs, активировав среду и запустив which python (он поймал меня, потому что мой путь закончился /pythonне /python3.6, даже если установлен python 3.6)

Вы можете использовать бегун типа "сценарий оболочки". Для этого вам нужно:

  1. создайте свой conda env с python3 и любыми пакетами и т. д., которые вы хотите в нем. Назови этоpy3env
  2. создайте каталог для хранения ваших скриптов бегуна, что-то вроде $HOME/c9_runner_scripts
  3. поместите туда сценарий под названием py3env_runner.sh бегун с кодом вроде:

    conda activate py3env python ~/c9/my_py3_script.py

  4. Затем создайте конфигурацию запуска с типом бегуна '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)

Лучший.

Другие вопросы по тегам