无法将新模块导入venv项目

时间:2017-10-03 20:17:15

标签: python virtualenv

这是我第一次使用虚拟环境,所以我不确定我做的是什么。我遵循了“flask mega tutorial”中的设置指南

$ python3 -m venv flask
$ flask/bin/pip3 install flask
$ flask/bin/pip3 install flask-login
$ flask/bin/pip3 install flask-openid
$ flask/bin/pip3 install flask-mail
$ flask/bin/pip3 install flask-sqlalchemy
$ flask/bin/pip3 install sqlalchemy-migrate
$ flask/bin/pip3 install flask-whooshalchemy
$ flask/bin/pip3 install flask-wtf
$ flask/bin/pip3 install flask-babel
$ flask/bin/pip3 install guess_language
$ flask/bin/pip3 install flipflop
$ flask/bin/pip3 install coverage

一切都很好。直到我意识到我需要一个新的包(实际上有两个,yaml和request)我在虚拟环境之外安装了pip3 install packagename

我可以在任何其他python文件中导入包,我可以在ipython3 shell中导入它们,但是我无法在我的flask项目中导入它们。如果我将它们放在views.py中,然后执行./run.py

我收到错误

ImportError: No module named 'yaml'

我已经尝试使用apt-get再次安装它们,但没有任何变化。

我的烧瓶文件如下:

run.py

#!flask/bin/python3
from app import app
app.run(debug=True)

__ init __。py

from flask import Flask

app = Flask(__name__)
app.config.from_object('config')

from app import views

veiws.py

from flask import Flask, render_template, request, session, redirect, url_for
from app import app
import time, os, subprocess
import yaml

## other stuff that works until I try to import yaml or any new package

1 个答案:

答案 0 :(得分:2)

您无法导入模块,因为它们未安装在您创建的virtualenv flask中。通过以与其他flask模块相同的方式安装它来解决这个问题,即。按照你的方法:

$ python3 -m venv flask
$ flask/bin/pip3 install flask
$ flask/bin/pip3 install flask-login
$ flask/bin/pip3 install flask-openid
$ flask/bin/pip3 install flask-mail
$ flask/bin/pip3 install flask-sqlalchemy
$ flask/bin/pip3 install sqlalchemy-migrate
$ flask/bin/pip3 install flask-whooshalchemy
$ flask/bin/pip3 install flask-wtf
$ flask/bin/pip3 install flask-babel
$ flask/bin/pip3 install guess_language
$ flask/bin/pip3 install flipflop
$ flask/bin/pip3 install coverage
$ flask/bin/pip3 install yaml
$ flask/bin/pip3 install requests