为Python2.7逐步设置EC2
我一直在到处寻找关于如何在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等) 不清楚的事情: 我需要吃点什么吗?默认
- 升级至Python2.7的最新版本(查找下载很容易,但在linux上安装不清楚)
- 添加Pip
- 添加简易安装
- 添加Virtualenv
- 将默认Python更改为2.7而不是2.x
- 在virtualenv中安装其他软件包(mechanize、beautifulsoup等)
- 我需要吃点什么吗?默认情况下有吗
- 我需要用什么更新.bashrc吗
- 安装其他python包的“首选”方法是什么?我怎样才能确保我做对了?
sudo-pip包的名称是否足够
- 我错过了什么
- 我什么时候使用sudo vs not
- 我是否需要添加站点包目录,还是默认情况下添加?为什么
sudo
是一个*nix命令)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!"