【问题标题】:django, python, postgres and web deploymentdjango、python、postgres 和 web 部署
【发布时间】:2018-11-24 20:01:43
【问题描述】:

这个错误一直困扰着我。我实际上已经开发了修复程序并记录了它,并且我成功地在以下 IP 地址上运行了服务器。重新安装 Ubuntu 操作系统后,我尝试重现我的成功......同样的错误,同样的修复将不再这样做......现在我需要外部帮助。我已经在互联网上梳理了解决方案。我尝试将 django 添加到 PYTHONPATH 并添加了它,但是当我退出 python 解释器时,附加的 django 路径消失了!

另一个可能有帮助的细节是我的网站 www.doman.com/admin 被定向到 django 管理员登录屏幕。我尝试使用用户名和密码登录,但失败了,这让我认为 django 无法正常工作。

$ sudo python3 manage.py runserver 192.165.4.3:80

我得到错误:

Traceback (most recent call last):
File "manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ModuleNotFoundError: No module named 'django'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "manage.py", line 14, in <module>
    ) from exc
ImportError: Couldn't import Django. Are you sure it's installed and
available on your PYTHONPATH environment variable? Did you forget to
activate a virtual environment?

Django 安装在我的环境中:

$ django-admin --version
2.0.6

Python 路径尝试:

$ PYTHONPATH=/home/kap/dev_env/lib/python3.6/site-packages/django python
Python 3.6.5 (default, Apr  1 2018, 05:46:30) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> sys.path
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined
>>> import sys
>>> sys.path
['', '/home/kap/dev_env/lib/python3.6/site-packages/django', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/kap/dev_env/lib/python3.6/site-packages']
>>> quit()

立即确认 django 已添加但它消失了:

$ python3
Python 3.6.5 (default, Apr  1 2018, 05:46:30) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/kap/dev_env/lib/python3.6/site-packages']

【问题讨论】:

  • 在没有超级用户权限的情况下运行manage.py runserver 脚本是否有效?
  • 您的两个示例使用不同版本的python,您可以使用which 命令确认这一点(第一个没有安装django)。另外,请尝试在没有 sudo 的情况下运行第一个命令,正如 Berk 提到的那样。
  • 使用pipenvvirtualenvdocker 可能更好。
  • 停止使用 sudo 运行东西。

标签: python django ubuntu nginx web-deployment


【解决方案1】:

考虑pipenv - git repo 是here,包含更多信息。更好地控制包,易于部署,更好地控制虚拟环境。

【讨论】:

    【解决方案2】:

    我实际上在有人发帖之前就解决了:

    `pip install django`     
    

    是我用的。更具体地说,我使用了“pip install django psycopg2 and gunicorn”,因为将这三个安装在一起似乎可以解决另一个问题。我使用的是 pip3 而不是 pip。有如此多的“敏感性”,以至于安装顺序、特定标志和安装包版本可能会破坏或造成整个事情。我正在考虑制作整个事情的教程并将视频放到网上。也许我可以在这个页面上设置一个链接。

    【讨论】:

      【解决方案3】:

      sudo 绕过它以 root 用户身份运行的虚拟环境,并且 django 未安装在 root 帐户中。这就是它抛出错误的原因。你可以在没有 sudo 的情况下运行,或者你可以通过

      在你的 root 帐户中安装 django

      sudo python3 -m pip install django

      【讨论】:

        【解决方案4】:

        试试这个:

        sudo python3 -m pip install django
        

        或者如果你有一个 requirements.txt

        sudo python3 -m pip install -r requirements.txt
        

        80端口最好用nginx来管理。

        【讨论】:

          猜你喜欢
          • 2021-04-24
          • 2019-08-05
          • 2021-04-30
          • 2014-04-05
          • 1970-01-01
          • 1970-01-01
          • 2019-08-14
          • 2016-07-16
          • 1970-01-01
          相关资源
          最近更新 更多