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.
3 Réponses :
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".
Vous pouvez utiliser un type de coureur «script shell». Pour ce faire, vous devez:
py3env
$HOME/c9_runner_scripts
placez-y un script appelé py3env_runner.sh
runner avec un code comme:
conda activer py3env
python ~ / c9 / my_py3_script.py
Créez ensuite une configuration d'exécution avec le type de runner 'shell script' et entrez c9_runner_scripts/py3env_runner.sh
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
env-name
par le nom de votre environnement partout. ikp3db
. 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é) 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.
J'ai trouvé une question connexe, sans réponse malheureusement ... stackoverflow.com/questions/52108586/...