【问题标题】:Getting pip to work on Amazon ec2 after you've updated to python 3.4更新到 python 3.4 后让 pip 在 Amazon ec2 上工作
【发布时间】:2015-12-18 09:53:57
【问题描述】:

我正在亚马逊 EC2 实例上构建一个 Django 网站。到目前为止,一切都很好。但是,我使用的是 Python 3.4 和 Django 1.8。默认情况下,Amazon 将其实例设置为 Python 2.7,但您可以使用两个命令对其进行更新。

sudo yum install python34

那么 sudo 替代品 --set python /usr/bin/python3.4

安装python 3.4,并将其设置为实例的默认python。但是,当您使用 python 3.4 时,您不能使用 pip。无论出于何种原因,当我更改我正在使用的 python 版本时,替代方案破坏了 pip。当我切换到 python 2.7 时,我得到了它 sudo 替代品 --set python /usr/bin/python2.7

但是,2.7 使用的 pip 版本不会安装最新的 Django。它也不会更新到更新版本的 pip。因此,我尝试将 pip 安装到 3.4 替代方案中。

sudo alternatives --set python /usr/bin/python3.4
wget http://pypi.python.org/packages/source/p/pip/pip-1.1.tar.gz#md5=62a9f08dd5dc69d76734568a6c040508
tar -xvf pip*.gz
cd pip*
sudo python setup.py install

这最终让我得到了错误 - Traceback(最近一次通话最后一次):

File "setup.py", line 3, in <module>
   from setuptools import setup
ImportError: No module named 'setuptools'

这令人印象深刻,因为 setuptools 被打包为 python 的基本部分。在这一点上,我想知道是否有任何干净的前进方式,或者我是否必须进行另一个没有损坏的独立 python 安装。

【问题讨论】:

  • 一个建议是尝试 python 的 anaconda 发行版。它并不能真正回答您的问题,但它可能是一种前进的方式。

标签: python django amazon-web-services amazon-ec2 python-3.4


【解决方案1】:

当你跑步时...

sudo yum install python34

...它不会安装 pip。所以你还需要运行...

sudo yum install python34-pip

【讨论】:

  • 真的那么简单吗?我已经使用 dockers 确定了一个不同的解决方案,但这会节省我......一周前的工作时间......
【解决方案2】:

首先是一些警告说明。似乎您正在使用 CentOS(或由于使用 yum 而类似的东西),它实际上将 Python2.6 用于其许多工具,因此将 python 更改为使用 python3 实际上可能会破坏其他东西。当前的最佳实践是在需要 Python3 时使用显式 python3 命令。

话虽如此,我不确定alternatives 命令的作用,但通常pip 命令是硬链接到 Python 可执行文件:

$ pip --version
pip 7.1.2 from /usr/local/lib/python2.7/site-packages (python 2.7)

你可以看到如果你catpip命令的内容:

$ cat `which pip` | head -n 1
#!/usr/local/opt/python/bin/python2.7

因此,将您的默认 python 更改为使用 Python3 可能会因此产生一些负面影响。

然而,还有另一种使用 pip 的方法 - 将其用作 python 模块。

$ python -m pip --version
pip 7.1.2 from /usr/local/lib/python2.7/site-packages (python 2.7)

当您使用该方法时,您可以消除 Python 版本 pip 当前使用的任何歧义,因为您是通过 Python 本身触发它的。这应该可以解决您的问题。

或者,您可能还想考虑使用虚拟环境。在这种情况下,您的默认系统 Python 可以保持为 Python2,但在您的 venv 中,您可以使用 Python3:

$ python --version
Python 2.7.10

$ virtualenv --python=`which python3` venv
$ source venv/bin/activate
(venv) $ python --version
Python 3.5.0

【讨论】:

    猜你喜欢
    • 2016-04-21
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    相关资源
    最近更新 更多