django、python、postgres 和网络部署

django, python, postgres and web deployment

这个错误一直困扰着我。我实际上已经开发了修复程序并记录了它,并且我成功地 运行 以下 IP 地址上的服务器。重新安装 Ubuntu OS 后,我尝试重现我的成功...出现相同的错误,相同的修复程序将不再执行...现在我需要外部帮助。我已经梳理了互联网的解决方案。我尝试将 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']

试试这个:

sudo python3 -m pip install django

或者如果您有 requirements.txt

sudo python3 -m pip install -r requirements.txt

最好用nginx管理80端口

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

在你的根帐户中安装 django

sudo python3 -m pip install django

我居然在别人发之前就解决了:

`pip install django`     

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

考虑 pipenv - git 回购是 here,并提供更多信息。更好地控制包,易于部署,更好地控制虚拟环境。