psycopg2安装在M1上,运行MacOS Big Sur,但无法运行本地服务器



我有运行苹果M1芯片的新款(2021(Macbook Air。我已经建立了使用postgresql的django应用程序,并创建了一个运行Python 3.9.2的virtualenv。我直接从Python.org上的macOS 64位universal2安装程序安装了Python。经过重重困难,我终于能够使用安装psycopg2

env LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib -L/opt/homebrew/opt/readline/lib" pip3 --no-cache install psycopg2-binary==2.8.6

我可以将SSH连接到我的PostgreSQL数据库中,但当我运行python manage.py runserver时,我会收到以下错误(由于长度原因而缩短(。

File "/Users/seb/.virtualenvs/onefabric/lib/python3.9/site-packages/django/contrib
/auth/models.py", line 2, in <module>
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
File "/Users/seb/.virtualenvs/onefabric/lib/python3.9/site-packages/django/contrib
/auth/base_user.py", line 47, in <module>
class AbstractBaseUser(models.Model):
File "/Users/seb/.virtualenvs/onefabric/lib/python3.9/site-packages/django/db/mode
ls/base.py", line 121, in __new__
new_class.add_to_class('_meta', Options(meta, app_label))
File "/Users/seb/.virtualenvs/onefabric/lib/python3.9/site-packages/django/db/mode
ls/base.py", line 325, in add_to_class
value.contribute_to_class(cls, name)
File "/Users/seb/.virtualenvs/onefabric/lib/python3.9/site-packages/django/db/mode
ls/options.py", line 208, in contribute_to_class
self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
File "/Users/seb/.virtualenvs/onefabric/lib/python3.9/site-packages/django/db/__in
it__.py", line 28, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/Users/seb/.virtualenvs/onefabric/lib/python3.9/site-packages/django/db/util
s.py", line 207, in __getitem__
backend = load_backend(db['ENGINE'])
File "/Users/seb/.virtualenvs/onefabric/lib/python3.9/site-packages/django/db/util
s.py", line 111, in load_backend
return import_module('%s.base' % backend_name)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/__
init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/Users/seb/.virtualenvs/onefabric/lib/python3.9/site-packages/django/db/back
ends/postgresql/base.py", line 29, in <module>
raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: dlopen(/
Users/seb/.virtualenvs/onefabric/lib/python3.9/site-packages/psycopg2/_psycopg.cpyth
on-39-darwin.so, 2): Symbol not found: _PQbackendPID
Referenced from: /Users/seb/.virtualenvs/onefabric/lib/python3.9/site-packages/psy
copg2/_psycopg.cpython-39-darwin.so
Expected in: flat namespace
in /Users/seb/.virtualenvs/onefabric/lib/python3.9/site-packages/psycopg2/_psycopg.
cpython-39-darwin.so

如何解决此问题并运行本地服务器?

从源代码安装libpq使事情恢复正常。当然,在罗塞塔码头做这件事。

$ brew install libpq --build-from-source
$ export LDFLAGS="-L/opt/homebrew/opt/libpq/lib"
$ pip install psycopg2

礼貌:https://github.com/psycopg/psycopg2/issues/1216#issuecomment-767892042

附加功能:如果仍然不起作用,请尝试

brew install openssl
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"

然后安装psycopg2

pip3 install psycopg2

这对我很有效:https://github.com/psycopg/psycopg2/issues/1208#issuecomment-768594079

我删除了virtualenv并重新创建了运行

python3 -m venv ~/.virtualenvs/onefabric

在Atom的终端内

相关内容

最新更新