python - 导入错误 : No module named parse

标签 python mongodb python-3.x flask pymongo

我正在尝试使用 mongodb 和 pymongo 运行 Web 应用程序以提供来自数据库的数据。

我收到的错误是 ImportError: No module named parse.请查看下面来自 apache2 网络服务器的 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,它在 python 2.x 中称为 urlparse。因此,使用 python 2.x 执行 import urllib.parse 会导致 ImportError。

I have virtual environment for Python 3.4,

您是如何激活您的虚拟环境的?

对评论的回应:

I think I did not use virtual environment to install Mongodb

没关系。虚拟环境中的 pymongo 代码连接到您的 mongodb 服务器(使用指定端口)。

After installation of Flask and pymongo I deactivated virtual environment.

您是否遵循了 Flask docs 中的说明?关于 mod_wsgivirtualenv 和设置 activate_this 变量?

对评论#2 的回应:

My web-site works in a static mode, only when I start using database it stops working due to this problem with parse module

是的,您的站点在使用 python 2.x 执行时运行良好,但是当您开始使用数据库时,您正在使用尝试在 python 3.x 中导入库的模块。因此,如果您继续使用 python 2.x 来执行您的站点,那么您将不会使用数据库。

I could not figure out what I need to put inside 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 文档的链接,然后再次阅读那里的 Material 。

关于python - 导入错误 : No module named parse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28247374/

相关文章:

python - 在 Sympy 中收集类似的表达式

python - 生成器在 Python 中解包的奇怪行为

python - 使用迭代器的最快(最 Pythonic)方式

python - Tkinter 在 Python 3 中没有按预期工作

python - 尝试不同的功能,直到一个不抛出异常

python - 使用 web2py DAL.define_table() 初始化数据库表的正确方法

python - 遇到以下错误 : E: Unable to locate package python-empy

MongoDB 或 CouchDB 作为移动设备的数据库?

node.js - findOne NodeJS MongoDB 驱动程序

javascript - Limit = 1 = 1ms, Limit > 1 = 150ms (mongo-melt-down)