【问题标题】:Do I need to install django separately for different python version?我需要为不同的python版本单独安装django吗?
【发布时间】:2015-06-21 11:14:56
【问题描述】:

我有 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 这里有哪些可能的锻炼方式?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 如何将 django 包添加到我的新版 python 中?默认情况下,我的版本是 2.7.3,我的新 python 版本位于 ./opt/python3.3 ./opt/python3.3/bin/python3.3 到目前为止,我已将 py 添加为指向 /opt 的软链接/python3.3/bin/python3.3
    • 你很可能有一个pip3 命令,所以使用pip3 install django。如果没有,请尝试sudo apt-get install pip3
    • 另请参阅:virtualenvwrapper.readthedocs.org/en/latest/… 使用虚拟环境可以让您将所有版本的 django 和 3rd 方模块与系统内容隔离开来。
    • invictus@invictus:~$ sudo pip install django Requirement already satisfied (use --upgrade to upgrade): django in /usr/local/lib/python2.7/dist-packages 清理...而不是使用我的新 python 版本,它适用于我系统上安装的默认 python 版本 2.7.3
    • 似乎使用 pip3 有其缺点。 askubuntu.com/questions/401132/…
    【解决方案2】:

    正如一些 cmets 所说,您应该使用 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,您的 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
    

    所以这个想法只是记住每次更改环境(安装、删除或升级某些包)时都重新运行此命令。

    【讨论】:

    • 感谢您的回答。在此链接askubuntu.com/questions/244544/how-do-i-install-python-3-3 中提供的布尔值的帮助下,我能够做到这一点。但是你能在这里解释更多关于 requirements.txt 的信息吗?我怎样才能保持更新。
    • 编辑回答你的问题^^
    • 非常感谢光谱 :)
    • 谢谢,这与其他一些关于 SO 的帖子一起帮助我为 python 3.4 版本建立了一个虚拟环境。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-09-02
    • 2013-09-18
    • 2019-09-26
    • 2021-04-02
    • 1970-01-01
    • 2019-02-21
    • 2020-02-06
    • 1970-01-01
    相关资源
    最近更新 更多