Python烧瓶:没有名为request的模块

时间:2016-07-09 13:28:25

标签: python flask

我在烧瓶应用中使用requests模块时遇到问题。我在同一目录级别有两个文件rest_server.pyindependent.pyindependent.py使用requests模块,如果我直接运行它,它会正确执行。但是,当我在independent.py中导入rest_server.py时,会显示以下错误 `

import independent
  File "/home/satwik/Desktop/angelhack/independent.py", line 5, in <module>
    import requests
ImportError: No module named requests`

我已经尝试了pip install requests,它表明需求已经满足。我也尝试在requests中导入rest_server.py,并发现它也能正确执行。 这是我的代码

** independent.py **

`import json
import os
import sys
import requests
sys.path.append('/home/satwik/Desktop/angelhack/comprehensive_search')

** rest_server.py **

`#!flask/bin/python
import six
from flask import Flask, jsonify, abort, request, make_response, url_for
from flask.ext.httpauth import HTTPBasicAuth
import independent

app = Flask(__name__, static_url_path="")`

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

为什么你得到了#34;没有命名的模块......&#34;错误

你的两个文件有一个很大的不同:rest_server.py包含 shebang 行,而independent.py不包含。

当您说直接执行文件independent.py时,您输入python independent.py(我假设在这里,因为您没有指定) 。这意味着您正在使用系统python解释器执行,该解释器将查找在系统级别安装的模块。在整个系统范围内,您通过pip install requests安装了 requests 模块,因此python会找到它,导入该东西并愉快地运行您的脚本。

执行文件rest_server.py时,您可以调用脚本的名称./rest_server.py(假设权限设置正确)。在这种情况下,第一行#!flask/bin/python(所谓的 shebang line )指示使用不同的python解释器,flask文件夹中包含的解释器,我假设包含虚拟环境。

您获得no module named requests因为该模块未安装在 flask 虚拟环境中。

如何修复错误

要解决此问题,只需在虚拟环境中安装请求模块

首先激活虚拟环境,然后安装所需的模块:

$ source flask/bin/activate
$ pip install requests

然后您可以再次尝试执行./rest_server.py,并且应正确导入请求模块。

有关shebang专线的更多信息:https://en.wikipedia.org/wiki/Shebang_(Unix)

有关虚拟环境的更多信息:https://pypi.python.org/pypi/virtualenv

答案 1 :(得分:0)

每当您执行pip install <package>时,它会将程序包安装到某个位置。将该位置添加到PATH中提及的Environment Variables列表中,您的问题就会得到解决。

答案 2 :(得分:0)

嗨,我有同样的问题,但我解决了:

通过此命令log4j.appender.kafkaAppender=org.apache.log4j.RollingFileAppender log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log log4j.appender.kafkaAppender.MaxFileSize=50MB log4j.appender.kafkaAppender.MaxBackupIndex=10 log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout log4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n 激活venv env之后 在此环境中,您可以输入. venv/bin/activate

在您的项目目录中,您可以打开pyvenv.cfg并打开

pip install requests

include-system-site-packages = false

:)

相关问题