为Python2.7逐步设置EC2

为Python2.7逐步设置EC2,python,amazon-ec2,pip,virtualenv,Python,Amazon Ec2,Pip,Virtualenv,我一直在到处寻找关于如何在EC2实例上设置以下内容的逐步解释。对于一个新用户,我希望事情是干净和正确的,但是所有的“指南”都有不同的信息,并且非常混乱 我的第一个想法是我需要做以下事情 升级至Python2.7的最新版本(查找下载很容易,但在linux上安装不清楚) 添加Pip 添加简易安装 添加Virtualenv 将默认Python更改为2.7而不是2.x 在virtualenv中安装其他软件包(mechanize、beautifulsoup等) 不清楚的事情: 我需要吃点什么吗?默认

我一直在到处寻找关于如何在EC2实例上设置以下内容的逐步解释。对于一个新用户,我希望事情是干净和正确的,但是所有的“指南”都有不同的信息,并且非常混乱

我的第一个想法是我需要做以下事情

  • 升级至Python2.7的最新版本(查找下载很容易,但在linux上安装不清楚)
  • 添加Pip
  • 添加简易安装
  • 添加Virtualenv
  • 将默认Python更改为2.7而不是2.x
  • 在virtualenv中安装其他软件包(mechanize、beautifulsoup等)
不清楚的事情:

  • 我需要吃点什么吗?默认情况下有吗
  • 我需要用什么更新.bashrc吗
  • 安装其他python包的“首选”方法是什么?我怎样才能确保我做对了?
    sudo-pip包的名称是否足够
  • 我错过了什么
  • 我什么时候使用sudo vs not
  • 我是否需要添加站点包目录,还是默认情况下添加?为什么

我想您可能不熟悉EC2,因此我建议您在继续部署EC2实例以运行Python2.7应用程序之前先了解一下这一点

总之,现在您对这一点比较熟悉了,下面是我通常如何通过EC2 web界面简单地部署一次性实例:

  • 使用您的凭据登录EC2仪表板
  • 选择启动实例按钮
  • 选择一个现代Linux发行版(因为
    sudo
    是一个*nix命令)
  • 根据需要/成本选择所需的规格
  • 部署实例
  • 实例启动后,按照独立SSH客户端的连接说明登录控制台(选择正在运行的实例,然后选择connect按钮)
  • 使用ssh登录到服务器后,您可以将其作为标准的无头Linux服务器系统进行管理
  • 我的建议是,与其花钱(除非您有资格获得免费层)运行EC2实例来学习所有这些,不如下载VirtualBox或VMWare Player,在您的机器上使用本地运行的Linux映像进行游戏和学习

    现在谈谈你不清楚的地方:它们与正常环境没有太大区别

  • yum
    是构建在
    RPM
    或RedHat package Manager之上的软件包管理系统。如果您使用其他发行版,它们可能有不同的包管理器。例如,其他常见的服务器发行版,如Debian和Ubuntu,它们将拥有
    aptitude
    apt-get
    ,ArchLinux将拥有
    pacman

    另外,一般来说,您可以依赖发行版的python软件包,您可以使用
    [sudo]yum install python27
    [sudo]apt get install python-2.7
    安装这些软件包,具体取决于所使用的Linux发行版

  • .bashrc
    控制运行shell的设置,通常它不会对服务器进程做任何事情。因此,如果您遵循使用Python的最佳实践(将在后面介绍),那么您可以放心地忽略这一点

  • 最佳实践通常是使用
    virtualenv
    实现本地化环境,而不是在系统级安装Python软件包

  • sudo
    用于需要系统级(root)权限的任务。除非有必要(如安装系统级软件包),否则通常要避免使用
    sudo

  • 不,
    virtualenv
    应该为您解决这个问题。从1.4.1开始,它发布自己版本的
    pip
    ,并将从那里安装


  • 因此,您似乎缺少的是在virtualenv中运行Python的经验。软件包的网站上有一些您可能需要熟悉的内容。

    如果您需要的版本不在可用的repo中,则可以使用脚本来构建python:


    +很好的总结。我一直在想,如果我敢用apt get安装
    pip
    ,冒着风险,它将不是最新的,或者我将尝试以其他方式安装它以获得最新的稳定。其他问题:您是通过
    pip
    还是通过
    apt-get
    安装
    virtualenv
    ?就我个人而言,我更喜欢《pip》而不是最新的。关于
    wheel
    和配置本地缓存呢?@JanVlcinsky通常我在系统级别安装了pip和virtualenv,以便更容易开始。您必须至少在一个点安装其中一个才能获得另一个(即引导),通常在创建virtualenv时,将安装最新版本的
    pip
    (或根据需要在其中安装)。您确定在创建新virtualenv时会安装最新版本的
    pip
    ?请看。@JanVlcinsky哦,等等,结果只是在一些我甚至没有安装pip的系统上,但是发生的是virtualenv包含了一个本地的pip发行版,这就是正在安装的-而且由于我当前的发行版有virtualenv最新的版本,而最新的版本又有最新的pip,所以我错了这个事实。谢谢,这有助于在amazon上安装完整版本的python:)
        #!/bin/bash -e
    
    NEW_VERSION="2.7.13"
    
    CURRENT_VERSION="$(python -V 2>&1)"
    if [[ "$CURRENT_VERSION" ==  "Python $NEW_VERSION" ]]; then
        echo "Python $NEW_VERSION already installed, aborting."
        exit 1
    fi
    
    echo "Starting upgrade from ${CURRENT_VERSION} to ${NEW_VERSION}"
    
    if [ ! -d "python_update" ]; then
       mkdir python_update
       cd python_update
       wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz
       tar xfz Python-2.7.13.tgz
       cd Python-2.7.13/
    else
      cd python_update
      cd Python-2.7.13/
    fi
    ./configure --prefix /usr/local/lib/python2.7.13 --enable-ipv6
    make && make install
    
    alternatives --install /usr/bin/python python /usr/local/lib/python2.7.13/bin/python 27130
    update-alternatives --refresh python
    update-alternatives --auto python
    
    curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python
    ln -sf /usr/local/lib/python2.7.13/bin/pip /usr/bin/pip
    pip install -U virtualenv
    ln -sf /usr/local/lib/python2.7.13/bin/virtualenv /usr/bin/virtualenv
    echo "DONE!"