我正在设置python3.3虚拟环境上的金字塔框架。 对于数据库连接,我使用MySQL Connector / Python(SQLAlchemy)。
我遇到了这个问题:
当我尝试从数据库中选择记录时,我得到以下内容:
[Wed Feb 12 09:20:34.373204 2014] [:error] [pid 29351] [remote 127.0.0.1:55376] File "/home/xxx/wsgi/env/lib/python3.3/site-packages/mysql_connector_python-1.1.5-py3.3.egg/mysql/connector/pooling.py", line 29, in <module>
[Wed Feb 12 09:20:34.373237 2014] [:error] [pid 29351] [remote 127.0.0.1:55376]
ImportError: No module named queue
它无法找到模块队列,但这很好用:
~/wsgi/env$ bin/python3.3
Python 3.3.2+ (default, Oct 9 2013, 14:50:09)
[GCC 4.8.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import queue
>>>
问题出在哪里? wsgi/env/lib/python3.3/
queue.py
中没有符号链接,但如果我手动添加,则会出现错误
编辑1: 当我使用pserve命令启动Web服务器时,一切正常,但是使用apache2,就会出现上面的那个。
Apache配置:
# Use only 1 Python sub-interpreter. Multiple sub-interpreters
# play badly with C extensions. See
# http://stackoverflow.com/a/10558360/209039
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
WSGIDaemonProcess pyramid user=user group=staff threads=4 \
python-path=/home/user/wsgi/env/lib/python3.3/site-packages
WSGIScriptAlias /app /home/user/wsgi/env/pyramid.wsgi
<Directory /home/user/wsgi/env>
WSGIProcessGroup pyramid
# Order allow,deny
Require all granted
</Directory>
答案 0 :(得分:0)
找出导致所有问题的原因。我使用的是mod_wsgi,与python3.3不兼容。 解决了问题:
sudo apt-get install libapache2-mod-wsgi-py3
答案 1 :(得分:0)
简短的故事:如果你的Python3代码依赖于队列模块,请确保导入&#34; queue&#34; - 不是&#34;队列&#34;。
长篇故事: 我遇到了类似的问题,同时尝试自动重启我的apache-served wsgi-coupled django-application。在我的情况下,我从https://code.google.com/p/modwsgi/wiki/ReloadingSourceCode获取了代码示例,并且仍然是第一个#ob;解决了#34;我的问题是&#34;导入队列&#34;通过在多处理导入队列中添加&#34;&#34; - 这显然是错误的,因为代码示例实际上是尝试从queuelib-module导入队列(至少我认为是这样)。因此,真正的,有点微妙的问题是大问题#Q; - 将行更改为&#34;导入队列&#34;解决了这个问题。