Python ImportError:没有名为parse的模块

Python ImportError:没有名为parse的模块,python,mongodb,python-3.x,flask,pymongo,Python,Mongodb,Python 3.x,Flask,Pymongo,我正在尝试使用mongodb和pymongo来运行web应用程序,以服务于数据库中的数据 我得到的错误是importorror:没有名为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 13996705

我正在尝试使用mongodb和pymongo来运行web应用程序,以服务于数据库中的数据

我得到的错误是importorror:没有名为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
mod_wsgi(pid=18824):目标wsgi脚本'/var/www/FlaskApp/FlaskApp.wsgi'不能作为Python模块加载。
[:error][pid 18824:tid 139967053518592]mod_wsgi(pid=18824):处理wsgi脚本'/var/www/FlaskApp/FlaskApp.wsgi'时发生异常。
[:error][pid 18824:tid 139967053518592]回溯(最近一次呼叫上次):
文件“/var/www/FlaskApp/FlaskApp.wsgi”,第12行,在
ABC导入应用程序as应用程序中的[:错误][pid 18824:tid 139967053518592]
[:error][pid 18824:tid 139967053518592]文件“var/www/FlaskApp/ABC/_init__.py”,第1行,在
来自pymongo import MongoClient的[:error][pid 18824:tid 139967053518592]
[:error][pid 18824:tid 139967053518592]文件“/var/www/FlaskApp/ABC/venv/lib/python3.4/site packages/pymongo/__init___;.py”,第92行
[:error][pid 18824:tid 139967053518592]来自pymongo.connection导入连接
[:error][pid 18824:tid 139967053518592]文件“/var/www/FlaskApp/ABC/venv/lib/python3.4/site packages/pymongo/connection.py”,第39行,在
来自pymongo.mongo_客户端导入MongoClient的[:error][pid 18824:tid 139967053518592]
[:error][pid 18824:tid 139967053518592]文件“/var/www/FlaskApp/ABC/venv/lib/python3.4/site packages/pymongo/mongo_client.py”,第46行
来自pymongo import(auth,
[:error][pid 18824:tid 139967053518592]文件“/var/www/FlaskApp/ABC/venv/lib/python3.4/site packages/pymongo/uri_parser.py”,第18行
URL lib.parse import unquote_plus中的[:error][pid 18824:tid 139967053518592]
[:error][pid 18824:tid 139967053518592]导入错误:没有名为parse的模块
我有Python3.4、Flask和pymongo的虚拟环境,我使用的是mongodb 2.6.7


有什么想法导致这个问题吗?

看起来你在用python 2.x运行你的应用程序,但是你的应用程序使用的模块来自python 3.x。特别是,
pymongo
正在尝试导入模块
urllib.parse
,在python 2.x中它被称为
urlparse
。因此,执行
import urllib.parse
使用Python2.x会引起一种恐惧

我有Python 3.4的虚拟环境

您是如何激活虚拟环境的

评论回复:

我想我没有使用虚拟环境来安装Mongodb

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

安装Flask和pymongo后,我停用了虚拟环境

您是否遵循了中有关
mod\u wsgi
virtualenv
以及设置
activate\u此
变量的说明

对评论的回应#2:

只有当我开始使用数据库时,我的网站才以静态模式工作 由于解析模块出现此问题,它停止工作

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

我想不出我需要在activate_this.py里面放些什么

试试这个:

1) 转到包含虚拟环境的目录:

$ cd /some/path/to/venv
2) 列出所有文件:

$ ls 
$ ls
3) 更改为bin目录:

$ cd bin
4) 列出所有文件:

$ ls 
$ ls
5) 打开文件
activate_this.py
并阅读顶部的注释,例如

$ vi activate_this.py
6) 点击我在上一次回复中发布的Flash文档的链接,再次阅读那里的材料。

Python2.7:

from urlparse import urlparse
蟒蛇3:

from urllib.parse import urlparse

谢谢您的建议!是的,我确实在服务器上安装了Python 2.7.8和3.4.2,这会导致问题。然而,Python3.4.2用于虚拟环境,Flask和Pymango用于虚拟环境venv。我使用了“源venv/bin/activate”。我使用pip3(Python 3.4.2)安装了pymongo。我想我没有使用虚拟环境来安装Mongodb。安装Flask和pymongo后,我停用了虚拟环境。从@user3151858:不,我没有使用“activate_this”,因为我无法确定需要在activate_this.py中放入什么。除此之外,我按照说明安装了“mod_wsgi”。我的网站是在静态模式下工作的,只有当我开始使用数据库时,它才会因为解析模块的问题而停止工作。@user3151858,请参阅上面我的回答。当我运行python-V时,我使用的是python 2.7.8。现在我设法切换到Python 3.4.2,我希望它能解决我在2.7.8上运行Flask的问题,但显然这仍然是一个问题,因为我“没有名为parse的模块”。烧瓶似乎仍在2.7.8上运行。