我是否需要为不同的python版本单独安装django?

时间:2015-06-21 11:14:56

标签: python django python-2.7 python-3.x

我有python版本2.7.3,我想学习django所以我在我的ubuntu 12.0.4上安装了django版本1.8.2。

invivtus@invictus:~/bin$ python
Python 2.7.3 (default, Sep 26 2013, 20:08:41) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django 
>>> django.VERSION
(1, 8, 2, 'final', 0)

然后我读到你用django工作的最好方法是使用python版本3.3所以我在我的系统上安装了python版本3.3.6,其中py是指向/opt/python3.3/bin的符号链接/python3.3

invictus@invictus:~/bin$ py
Python 3.3.6 (default, Jun 21 2015, 16:13:35) 
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.

当我尝试导入django时,我得到错误

>>> import django
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'django

我看到django安装了我的python 2.7目录。

>>> import django
>>> django
<module 'django' from '/usr/local/lib/python2.7/dist-packages/django/__init__.pyc'>

我如何在我的3.3.6版本中使用这个django。我的默认python版本是2.7.3 这里可以锻炼什么?

2 个答案:

答案 0 :(得分:2)

是的,每个Python版本都有自己的已安装软件包的文件夹。您必须为Python 3.3单独安装Django。对于默认情况下不可用的每个包都是如此。

(如果您正在使用Python 3,为什么不选择最新最好的3.4?)

答案 1 :(得分:1)

正如一些评论所说,你应该使用virtualenv来隔离你的环境。你会这样做:

1)确保您已安装virtualenv。例如,在Ubuntu上,这将是包virtualenv

2)创建一个新的空白环境。你选择它会是这样的python版本:

virtualenv -p /usr/bin/python3.4 env

3)创建了一个env文件夹。激活新创建的环境:

. env/bin/activate

这会更新您的路径,现在,当您从此shell运行pythonpip时,它们将在您的virtualenv的上下文中执行。

4)更新virtualenv(可选)

pip install -U pip

5)安装您需要的任何软件包。建议的方法是在项目的根目录下有一个requirements.txt文件。你会这样拉他们:

pip install -r myproject/requirements.txt

就是这样。像往常一样使用pip命令。只要您使用virtualenv active,您的python命令将只看到您明确安装在其中的模块。

6)不要忘记在每个新shell中重新运行. env/bin/activate。如果您认为自己可能会忘记,可以将其添加到manage.py

import sys
if __name__ == "__main__":
    if not hasattr(sys, 'real_prefix'):
        sys.stderr.write('Running outside of any virtualenv - did you forget to activate one?\n')

有什么好处?

  • 每个项目都有一个孤立的环境(没有冲突)。
  • 您可以在不同的项目中使用同一模块的不同版本。
  • 系统更新不会破坏您的项目。
  • 您没有使用非托管文件污染您的系统。
  • 你永远不会以root用户身份运行东西,这意味着增加了隔离,并且无需root权限就可以运行你的项目。
  • 只要您使requirements.txt保持最新状态(使用pip freeze),就可以在另一个系统上重建virtualenv,这样就可以了。

[编辑:使用requirements.txt]

这只是一个具有pip install规范的文件,一个接一个。它允许从头开始重建virtualenv。您可以使用以下命令从当前的virtualenv生成它:

pip freeze > requirements.txt

所以我的想法只是记住每次更改环境时重新运行此命令(安装,删除或升级某些软件包)。