8
votes

Configurer AWS Cloud9 pour utiliser l'environnement Anaconda Python

Je souhaite qu'AWS Cloud9 utilise la version Python et des packages spécifiques de mon environnement Anaconda Python. Comment puis-je atteindre cet objectif? Où dois-je regarder dans les paramètres ou la configuration?

Ma configuration actuelle: j'ai une instance AWS EC2 avec Ubuntu Linux et j'ai configuré AWS Cloud9 pour qu'il fonctionne avec l'instance EC2.

J'ai Anaconda installé sur l'instance EC2 et j'ai créé un environnement conda Python3 à utiliser, mais Cloud9 veut toujours utiliser la version Python3 installée sur mon système Linux.


1 commentaires

J'ai trouvé une question connexe, sans réponse malheureusement ... stackoverflow.com/questions/52108586/...


3 Réponses :


6
votes

J'ai finalement trouvé quelque chose qui force AWS Cloud9 à utiliser la version Python3 installée dans mon environnement Anaconda sur mon instance AWS EC2.

Les instructions pour créer un runner AWS Cloud9 personnalisé pour Python sont ici :

{
    "cmd" : ["/home/ubuntu/anaconda3/envs/ijackweb/bin/python3.6", "$file", "$args"],
    "info" : "Running $project_path$file_name...",
    "selector" : "source.py"
}

Je crée juste un nouveau runner et je colle le code ci-dessus, et Cloud9 exécute mon application avec la version de Python3 de mon environnement Anaconda.

La seule chose que je ne comprends pas à propos du code ci-dessus est ce que fait la ligne "selector": "source.py".


0 commentaires

1
votes

Vous pouvez utiliser un type de coureur «script shell». Pour ce faire, vous devez:

  1. créez votre environnement conda, avec python3 et tous les packages, etc. Appelez-le py3env
  2. créez un répertoire pour contenir vos scripts runner, quelque chose comme $HOME/c9_runner_scripts
  3. placez-y un script appelé py3env_runner.sh runner avec un code comme:

    conda activer py3env python ~ / c9 / my_py3_script.py

  4. Créez ensuite une configuration d'exécution avec le type de runner 'shell script' et entrez c9_runner_scripts/py3env_runner.sh


0 commentaires

2
votes

Après quelques tests, j'ai réalisé que ma réponse précédente vous empêche de pouvoir utiliser le débogueur. En vous basant sur la réponse de @Sean_Calgary (qui est meilleure que ma réponse originale), vous pouvez modifier l'un des coureurs python intégrés (encore une fois, en remplaçant simplement l'appel python par le chemin complet du chemin python de conda env), comme ceci :

    {
  "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"
}

Pour ce faire, cliquez simplement sur 'coureurs' à côté de CWD dans le coin inférieur droit -> python3 -> éditer le coureur -> enregistrer sous 'env-name.run' dans /.c9/runners (qui enregistre comme il devrait vous diriger vers le bon répertoire par défaut).

NB

  1. Remplacez env-name par le nom de votre environnement partout.
  2. Vous aurez besoin du package du débogueur installé dans votre environnement conda. Il s'appelle ikp3db .
  3. Vous devrez peut-être vérifier le chemin vers l'exécutable python de votre envs conda en activant l'environnement et en exécutant quel python (il m'a surpris car mon chemin se terminait par / python , pas /python3.6 , même si c'est python 3.6 qui est installé)


3 commentaires

J'obtiens l'erreur "AssertionError: SRE module mismatch" lorsque j'exécute un fichier avec mon environnement. Aucune suggestion?


@SinanGok avez-vous installé ikp3db dans votre environnement conda? Il semble que votre environnement conda ne dispose pas d'un package python dont il a besoin.


J'ai en fait résolu ce problème en mettant à jour conda avec python = 3.6. Mon runner personnalisé, où j'ai remplacé le chemin python comme vous l'avez suggéré ci-dessus, n'a pas fonctionné hier pour une raison quelconque. Mais ça marche maintenant. Merci.