ImportError: No module named parse
ImportError: No module named parse
我正在尝试 运行 Web 应用程序使用 mongodb 和 pymongo 来提供来自数据库的数据。
我收到的错误是 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_wsgi
、virtualenv
和设置 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) 单击 link 到我在之前的回复中发布的 Flash 文档,然后再次阅读 material。
Python2.7:
from urlparse import urlparse
Python3:
from urllib.parse import urlparse
我正在尝试 运行 Web 应用程序使用 mongodb 和 pymongo 来提供来自数据库的数据。
我收到的错误是 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_wsgi
、virtualenv
和设置 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) 单击 link 到我在之前的回复中发布的 Flash 文档,然后再次阅读 material。
Python2.7:
from urlparse import urlparse
Python3:
from urllib.parse import urlparse