逐步设置EC2以运行Python 2.7

7 投票
2 回答
14999 浏览
提问于 2025-04-18 14:13

我到处寻找关于如何在EC2实例上一步一步设置这些东西的解释。作为一个新用户,我希望一切都能清晰正确,但所有的“指南”提供的信息都不一样,真的很让人困惑。

我首先想到的是我需要做以下几件事:

  • 升级到最新版本的Python2.7(找到下载很简单,但在Linux上安装不太清楚)
  • 添加Pip
  • 添加Easy_Install
  • 添加Virtualenv
  • 把默认的Python改成2.7,而不是2.x
  • 在virtualenv中安装其他包(比如mechanize、beautifulsoup等)

不清楚的地方:

  • 我需要yum吗?它是默认就有的吗?
  • 我需要在.bashrc里更新什么吗?
  • 安装额外的Python包的“推荐”方法是什么?我怎么确保自己做对了?sudo pip package_name就够了吗?
  • 我还缺少什么吗?
  • 什么时候用sudo,什么时候不用?
  • 我需要添加一个site-packages目录吗,还是默认就有的?为什么/为什么不?

2 个回答

0

如果你需要的Python版本在可用的仓库里找不到,可以使用下面的脚本来自己构建Python:

https://gist.github.com/AvnerCohen/3e5cbe09bc40231869578ce7cbcbe9cc

    #!/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!"
7

我猜你可能对EC2不太熟悉,所以我建议你先看看这个常见问题解答,再继续部署一个EC2实例来运行你的Python2.7应用。

好了,既然你对这个有了一些了解,下面是我通常通过EC2网页界面快速部署一个临时实例的步骤:

  1. 用你的账号登录EC2仪表盘
  2. 点击“启动实例”按钮
  3. 选择一个现代的Linux发行版(因为sudo是个*nix命令)
  4. 根据需求和费用选择所需的配置
  5. 部署实例
  6. 实例启动后,按照连接说明使用独立的SSH客户端登录控制台(选择正在运行的实例,然后点击“连接”按钮)
  7. 通过ssh登录服务器后,你可以像管理标准的无头Linux服务器一样进行管理

我建议,如果你不是免费套餐的用户,别花钱在EC2实例上学习这些东西,不如下载VirtualBox或VMWare Player,在你自己的机器上运行一个Linux镜像来学习和实践。

现在来解答你不太明白的地方:它们和普通环境没什么不同。

  1. yum是一个基于RPM(红帽包管理器)的包管理系统。如果你使用其他发行版,它们可能会有不同的包管理工具。例如,常见的Debian和Ubuntu发行版会使用aptitudeapt-get,而ArchLinux会使用pacman

    另外,通常你可以依赖发行版自带的Python包,直接用[sudo] yum install python27[sudo] apt-get install python-2.7来安装,具体取决于你使用的Linux发行版。

  2. .bashrc控制你运行的shell的设置,通常对你的服务器进程没有影响。所以,如果你按照最佳实践来使用Python,可以放心不去碰它。

  3. 最佳实践通常是使用virtualenv来创建独立的环境,而不是在系统级别安装Python包。

  4. sudo是用来执行需要系统级(root)权限的任务的。一般来说,除非必要(比如安装系统级包),你应该尽量避免使用sudo

  5. 不需要,virtualenv会为你处理这些。从1.4.1版本开始,它会自带自己的pip,并从那里进行安装。

所以,你似乎缺少的是在virtualenv中运行Python的经验。你可以在这个包的官方网站上找到很好的说明,建议你去熟悉一下。

撰写回答