2015-02-16 3 views
0

Я пытаюсь научиться фляге. Я создал virtualenv и использую файл hello.py example как в here.Невозможно импортировать модуль в virtualenv

Для справки, содержание hello.py выглядит следующим образом:

from flask import Flask 
app = Flask(__name__) 

@app.route("/") 
def hello(): 
    return "Hello World!" 

if __name__ == "__main__": 
    app.run() 

я могу запустить файл, и он создает функционирующий веб-приложение.

Итак, теперь я создал единый тестовый файл в том же каталоге, что и hello.py, и он импортирует привет. Код для этого файла выглядит следующим образом:

import os 
import hello 
import unittest 

class FlaskrTestCase(unittest.TestCase): 

    def setUp(self): 
     self.app = hello.app.test_client() 

if __name__ == '__main__': 
    unittest.main() 

Когда я запускаю тестовый файл блока он пытается выполнить hello.py и терпит неудачу с:

ImportError: No module named flask. 

Что мне не хватает?

+0

Ну, эм, * сделал * установить 'flask' ​​первый? В 'virtualenv' вы используете? – jonrsharpe

+3

@ jonrsharpe: Он говорит, что это работает, если он запускает 'hello.py' напрямую, это работает, что предполагает, что он установлен каким-то образом. – BrenBarn

+0

Как я уже сказал, приложение в hello.py работает. Поэтому я так предполагаю, если я не пропущу даже больше, чем я думал. – David

ответ

0

Кажется, что вы еще не активировали свой virtualenv, используйте команду source virtualenv/bin/activate для активации.

Соответствующая документация: http://docs.python-guide.org/en/latest/dev/virtualenvs/

+0

Я следил за инструкциями по установке флеш-памяти, и приложение работает в моем браузере (хотя оно просто возвращает «Hello world»). – David

+1

В этом случае вы, вероятно, запускаете модульный тест за пределами virtualenv – Wolph

+0

Это кажется разумным предположением, но оно находится в том же каталоге, что и 'hello.py', который также является тем же каталогом, который содержит каталог виртуального env (venv) , – David