逐步设置EC2以运行Python 2.7
我到处寻找关于如何在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 个回答
如果你需要的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!"
我猜你可能对EC2不太熟悉,所以我建议你先看看这个常见问题解答,再继续部署一个EC2实例来运行你的Python2.7应用。
好了,既然你对这个有了一些了解,下面是我通常通过EC2网页界面快速部署一个临时实例的步骤:
- 用你的账号登录EC2仪表盘
- 点击“启动实例”按钮
- 选择一个现代的Linux发行版(因为
sudo
是个*nix命令) - 根据需求和费用选择所需的配置
- 部署实例
- 实例启动后,按照连接说明使用独立的SSH客户端登录控制台(选择正在运行的实例,然后点击“连接”按钮)
- 通过ssh登录服务器后,你可以像管理标准的无头Linux服务器一样进行管理
我建议,如果你不是免费套餐的用户,别花钱在EC2实例上学习这些东西,不如下载VirtualBox或VMWare Player,在你自己的机器上运行一个Linux镜像来学习和实践。
现在来解答你不太明白的地方:它们和普通环境没什么不同。
yum
是一个基于RPM
(红帽包管理器)的包管理系统。如果你使用其他发行版,它们可能会有不同的包管理工具。例如,常见的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的经验。你可以在这个包的官方网站上找到很好的说明,建议你去熟悉一下。