首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用psycopg2._psycopg导入uWSGI时出错

使用psycopg2._psycopg导入uWSGI时出错
EN

Stack Overflow用户
提问于 2016-01-19 06:08:13
回答 2查看 1.1K关注 0票数 1

当我试图运行uwsgi --ini <my uwsi ini file>时,我得到了以下导入错误

代码语言:javascript
复制
Traceback (most recent call last):
  File "/var/www/mysite/venv/lib/python3.5/site-packages/django/db/backends/postgresql/base.py", line 20, in <module>
    import psycopg2 as Database
  File "/var/www/mysite/venv/lib/python3.5/site-packages/psycopg2/__init__.py", line 50, in <module>
    from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: No module named 'psycopg2._psycopg'

但是,当我使用

代码语言:javascript
复制
python manage.py runserver --settings=config.settings.prod

安装了psycopg2,Django没有发现任何问题。只有当我使用uwsgi运行服务器时,它才能找到_psycopg模块。

这是我的uwsgi.ini

代码语言:javascript
复制
[uwsgi]
# variables
base = /var/www/mysite

# general settings
master = True
plugins = python3
vacuum = True

env = DJANGO_SETTINGS_MODULE=config.settings.prod
env = PYTHONHASHSEED=random

# directory containing packages
chdir=%(base)/server

# python modules and paths
home = %(base)/venv
module = config.wsgi:application
pythonpath = %(chdir)
pythonpath = %(home)/lib/python3.5/site-packages

# socket file settings
socket = %(base)/conf/%n.sock
uid = www-data
gid = www-data
chmod-socket = 644
chown-socket = www-data:www-data

# location of log files
logto = /var/log/uwsgi/%n.log

这两种模式有什么不同呢?我看到的唯一不同是,我将manage.py作为根运行,而uwsgi以用户www-data的身份运行(如.ini),但是将uwsgi作为根运行会产生相同的错误。

有什么线索吗?

编辑:

uwsgi错误日志中找到线索:

代码语言:javascript
复制
*** Starting uWSGI 2.0.7-debian (64bit) on [Mon Jan 18 22:27:08 2016] ***
compiled with version: 4.9.1 on 25 October 2014 19:17:54
os: Linux-3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u2 (2016-01-02)
nodename: averna
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 1
current working directory: /var/www/mysite/scripts
detected binary path: /usr/bin/uwsgi-core
your processes number limit is 1789
your memory page size is 4096 bytes
detected max file descriptor number: 65536
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to UNIX address /var/www/mysite/conf/uwsgi.sock fd 3
setgid() to 33
setuid() to 33
Python version: 3.4.2 (default, Oct  8 2014, 10:47:48)  [GCC 4.9.1]
PEP 405 virtualenv detected: /var/www/mysite/venv
Set PythonHome to /var/www/mysite/venv
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x23b43f0
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 145536 bytes (142 KB) for 1 cores
*** Operational MODE: single process ***
added /var/www/mysite/server/ to pythonpath.
added /var/www/mysite/venv/lib/python3.5/site-packages/ to pythonpath.
Traceback (most recent call last):
  File "/var/www/mysite/venv/lib/python3.5/site-packages/django/db/backends/postgresql/base.py", line 20, in <module>
    import psycopg2 as Database
  File "/var/www/mysite/venv/lib/python3.5/site-packages/psycopg2/__init__.py", line 50, in <module>
    from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: No module named 'psycopg2._psycopg'

它说uwsgi正在使用PythonVersion3.4.2(系统版本),但我在虚拟环境中运行3.5.1。现在,我如何解决这个问题,而不必在虚拟环境中降级到Python3.4.2呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-20 05:41:30

我通过避免安装sudo apt-get install uwsgi来安装uwsgiuwsgi-plugin-python3来解决这个问题。这导致了为Python3.4构建的版本(也在我的系统上)。

相反,我是用sudo pip3 install uwsgi安装的,pip3是Python3.5目录中的一个。它为Python3.5构建了uwsgi及其插件。我只需将生成的uwsgi文件符号链接到/usr/bin (ln -s <my python 3.5 dir>/bin/uwsgi /usr/bin/uwsgi),这样它就可以在系统范围内使用。

psycopg2似乎在Python3.5中运行得很好,所以我唯一的问题是需要使用Python3.5构建uwsgi

票数 1
EN

Stack Overflow用户

发布于 2016-01-19 08:28:11

psycopg2不适用于python3.5

来自特征列表

支持从2.5版本到3.4版本的Python版本(Python2.4一直支持到精神病学版本2.4.x)。

如果要使用此包,则需要将其降级为python3.4

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34869633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档