【问题标题】:Configure AWS Cloud9 to use Anaconda Python Environment配置 AWS Cloud9 以使用 Anaconda Python 环境
【发布时间】:2019-06-03 18:37:21
【问题描述】:

我希望 AWS Cloud9 使用我的 Anaconda Python 环境中的 Python 版本和特定包。我怎样才能做到这一点?我应该在哪里查看设置或配置?

我当前的设置:我有一个带有 Ubuntu Linux 的 AWS EC2 实例,并且我已将 AWS Cloud9 配置为与 EC2 实例一起使用。

我在 EC2 实例上安装了 Anaconda,我已经创建了一个 conda Python3 环境来使用,但是 Cloud9 总是想使用我的 Linux 系统安装的 Python3 版本。

【问题讨论】:

标签: python amazon-web-services amazon-ec2 anaconda aws-cloud9


【解决方案1】:

我终于找到了迫使 AWS Cloud9 使用安装在我的 AWS EC2 实例上的 Anaconda 环境中的 Python3 版本的东西。

为 Python 创建自定义 AWS Cloud9 运行器的说明是 here

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

我只是创建了一个新的运行器并将上面的代码粘贴到那里,Cloud9 使用我的 Anaconda 环境的 Python3 版本运行我的应用程序。

我对上述代码唯一不明白的是 "selector": "source.py" 行的作用。

【讨论】:

    【解决方案2】:

    经过一些测试,我意识到我之前的回答使您无法使用调试器。在@Sean_Calgary 的答案(比我原来的答案更好)的基础上,您可以编辑其中一个内置的python 运行程序(同样,只需将python 调用替换为conda env 的python 路径的完整路径),就像这样:

        {
      "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 旁边的“runners” -> python3 -> 编辑 runner -> 在 /.c9/runners 中另存为 'env-name.run' (另存为默认情况下应该指向正确的目录)。

    注意

    1. env-name 替换为您的环境名称。
    2. 您需要在您的 conda 环境中安装调试器的软件包。它叫ikp3db
    3. 您可能需要通过激活环境并运行 which python 来检查您的 conda envs 可执行 python 的路径(他抓住了我,因为我的路径以 /python 结尾,而不是 /python3.6,即使它是 python 3.6已安装)

    【讨论】:

    • 在我的环境中运行文件时出现“AssertionError:SRE 模块不匹配”错误。有什么建议吗?
    • @SinanGok 您是否将 ikp3db 安装到您的 conda 环境中?听起来你的 conda 环境缺少它需要的 python 包..
    • 我实际上通过使用 python=3.6 更新 conda 解决了这个问题。我的自定义跑步者,我按照你上面的建议替换了 python 路径,昨天由于某种原因没有工作。但它现在有效。谢谢。
    【解决方案3】:

    您可以使用“shell 脚本”运行器类型。为此,您需要:

    1. 创建你的 conda 环境,使用 python3 和任何你想要的包等。叫它py3env
    2. 创建一个目录来保存你的运行脚本,比如$HOME/c9_runner_scripts
    3. 在其中放置一个名为py3env_runner.sh runner 的脚本,代码如下:

      conda activate py3env python ~/c9/my_py3_script.py

    4. 然后使用'shell script'运行器类型创建运行配置并输入c9_runner_scripts/py3env_runner.sh

    【讨论】:

      【解决方案4】:

      对我来说,在 centos 7 上使用我的 conda python v 3.9.4 执行的唯一方法是在我的 .bash_profile 中添加一个 conda activate 行,如下所示:

      conda 激活 /var/www/my_conda/python3.9

      然后在 Cloud 9 中,当我在我的 conda python 3.9 env 下运行我的代码时,一切都很好。

      这是我的简单 python 代码,它将打印当前的 python 版本

      import sys
      print(sys.version)
      

      最好的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-20
        • 1970-01-01
        • 2019-05-28
        • 1970-01-01
        • 1970-01-01
        • 2016-08-22
        • 2020-10-18
        相关资源
        最近更新 更多