我正在尝试使用 mongodb 和 pymongo 运行 Web 应用程序来提供数据库中的数据。
我收到的错误是 ImportError:没有名为 parse 的模块。请参阅以下来自 apache2 Web 服务器的 error.log:
mod_wsgi (pid=18824): Target WSGI script '/var/www/FlaskApp/flaskapp.wsgi' cannot be loaded as Python module.
[:error] [pid 18824:tid 139967053518592] mod_wsgi (pid=18824): Exception occurred processing WSGI script '/var/www/FlaskApp/flaskapp.wsgi'.
[:error] [pid 18824:tid 139967053518592] Traceback (most recent call last):
File "/var/www/FlaskApp/flaskapp.wsgi", line 12, in <module>
[:error] [pid 18824:tid 139967053518592] from ABC import app as application
[:error] [pid 18824:tid 139967053518592] File "var/www/FlaskApp/ABC/__init__.py", line 1, in <module>
[:error] [pid 18824:tid 139967053518592] from pymongo import MongoClient
[:error] [pid 18824:tid 139967053518592] File "/var/www/FlaskApp/ABC/venv/lib/python3.4/site-packages/pymongo/__init__.py", line 92, in <module>
[:error] [pid 18824:tid 139967053518592] from pymongo.connection import Connection
[:error] [pid 18824:tid 139967053518592] File "/var/www/FlaskApp/ABC/venv/lib/python3.4/site-packages/pymongo/connection.py", line 39, in <module>
[:error] [pid 18824:tid 139967053518592] from pymongo.mongo_client import MongoClient
[:error] [pid 18824:tid 139967053518592] File "/var/www/FlaskApp/ABC/venv/lib/python3.4/site-packages/pymongo/mongo_client.py", line 46, in <module>
[:error] [pid 18824:tid 139967053518592] from pymongo import (auth,
[:error] [pid 18824:tid 139967053518592] File "/var/www/FlaskApp/ABC/venv/lib/python3.4/site-packages/pymongo/uri_parser.py", line 18, in <module>
[:error] [pid 18824:tid 139967053518592] from urllib.parse import unquote_plus
[:error] [pid 18824:tid 139967053518592] ImportError: No module named parse
我有 Python 3.4、Flask 和 pymongo 的虚拟环境。我使用的是 mongodb 2.6.7。
有什么想法导致问题吗?
看起来您正在使用 python 2.x 运行您的应用程序,但您的应用程序使用的模块来自 python 3.x。尤其,pymongo
正在尝试导入模块urllib.parse
,这被称为urlparse
在Python 2.x中。结果,执行import urllib.parse
使用 python 2.x 会导致导入错误。
我有Python 3.4的虚拟环境,
您是如何激活虚拟环境的?
回复评论:
我想我没有使用虚拟环境来安装Mongodb
没关系。虚拟环境中的 pymongo 代码用于连接到 mongodb 服务器(使用指定端口)。
安装 Flask 和 pymongo 后,我停用了虚拟环境。
您是否遵循了中的说明Flask 文档 http://flask.pocoo.org/docs/0.10/deploying/mod_wsgi/#working-with-virtual-environments关于mod_wsgi
, virtualenv
,并设置activate_this
多变的?
对评论 #2 的回应:
我的网站仅在开始使用数据库时以静态模式运行
由于解析模块的问题,它停止工作
是的,您的网站在使用 python 2.x 执行时工作正常,但是当您开始使用数据库时,您正在使用尝试导入 python 3.x 内的库的模块。因此,如果您继续使用 python 2.x 来执行您的站点,那么您将不会使用数据库。
我不知道需要在 activate_this.py 中放入什么。
尝试这个:
1) 转到包含虚拟环境的目录:
$ cd /some/path/to/venv
2)列出所有文件:
$ ls
3)切换到bin目录:
$ cd bin
4)列出所有文件:
$ ls
5)打开文件activate_this.py
并阅读顶部的评论,例如
$ vi activate_this.py
6) 单击我在之前的回复中发布的 Flash 文档的链接,然后再次阅读其中的材料。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)