小编典典

非法指令:运行Django时为4

python

我现在进行了Django v1.11.10的全新安装。当我运行时,python manage.py runserver一切正常。但是当我尝试连接到Postgres数据库时,我安装了package pip install psycopg2,修改了DATABASESvaribale,并在运行runserver命令后失败并显示以下Illegal instruction错误:

Performing system checks...

System check identified no issues (0 silenced).
Illegal instruction: 4

它是什么?如何获取日志错误?我使用Mac OS 10.11.6,PostgresApp(已在v9和v10服务器上尝试过以检查错误源)。Python
3.6.4(通过virtualenv)。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydb',
        'USER': 'sirjay',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '',
    }
}

错误是相同的,如果我设置NAMEUSER不正确或者即使我关掉Postgres.app服务器。就像Django没有看到Postgres。但是有了phpPgAdmin我我就可以连接到Postgres服务器了。


阅读 231

收藏
2021-01-20

共1个答案

小编典典

psycopg2是用C编写的,需要进行编译。当您pip install打包时,通常会有一个预编译的二进制车轮可供下载。

由于某种原因,预编译psycopg2模块包含您的CPU无法识别的指令(可能是因为您的处理器太旧了)。您可以通过自己编译模块来解决此问题,这将确保代码在您的CPU上正常工作:

$ pip install --no-binary psycopg2 psycopg2

--no-binary psycopg2是一个单独的选项,因此您必须指定两次包名称。您也可以将其包括在内requirements.txt

psycopg2==a.b.c    --no-binary psycopg2
2021-01-20