Mon*_*ort 6 python django psycopg2 macos-big-sur apple-m1
我有一台运行 Apple M1 芯片的新款 (2021) Macbook Air。我已经设置了我的 django 应用程序,它使用 postgresql,并且创建了一个运行 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
Run Code Online (Sandbox Code Playgroud)
我能够通过 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
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题并运行我的本地服务器?
从源代码安装 libpq 让一切再次正常运行。当然,请在 Rosetta 终端中执行此操作。
$ brew install libpq --build-from-source
$ export LDFLAGS="-L/opt/homebrew/opt/libpq/lib"
$ pip install psycopg2
Run Code Online (Sandbox Code Playgroud)
礼貌: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"
Run Code Online (Sandbox Code Playgroud)
然后安装psycopg2
pip3 install psycopg2
Run Code Online (Sandbox Code Playgroud)
这对我有用:https ://github.com/psycopg/psycopg2/issues/1208#issuecomment-768594079
我删除了 virtualenv 并重新创建了它运行
python3 -m venv ~/.virtualenvs/onefabric
Run Code Online (Sandbox Code Playgroud)
Atom 终端内
| 归档时间: |
|
| 查看次数: |
12854 次 |
| 最近记录: |