[英]importing from another folder in virtualenv
我正在遵循Flask Mega教程 ,一旦进入第二部分并重组我的文件夹结构以匹配它们的文件夹结构,我就遇到了问题,我无法导入Flask。
我当前的文件夹结构如下
/FlaskTest
/app
/static, templates etc
/flask
/virtualenv folders etc
/tmp
run.py
据我所知,文件夹结构与顶层目录的命名相同。
在我的__init__.py文件(/app/__init__.py)中,我正在按照教程中的说明进行操作,
from flask import Flask
app = Flask(__name__)
from app import views
我收到“无法导入名称'Flask'”的导入错误。 我猜这个问题是因为flask软件包已安装到/ flask / lib / site-packages。
我的问题:如何引用flask / site-packages的子文件夹?
我已经阅读了python 导入系统文档,并且从阅读第一遍的过程中可以了解到这一点,我可能需要做一些类似的操作,例如flask import flask.Flask之类。
更新 :因此,在目录周围进行cd检查并检查了pip列表后,我意识到我的应用程序目录无法访问flask。 我在应用程序目录中运行了pip install flask。 现在,我的网站可以运行,但是我不确定这是否是使用Python进行操作的最佳实践。 请提供一些清晰的信息,说明最佳做法是安装软件包以及软件包所在的位置。
更新2 :创建名为独立目录之后。 在此文件夹中,我创建了一个名为standalone-test的虚拟环境。 一次,我做到了,我还mkdir'ed应用程序并从FlaskTest复制了它的内容,以使代码完全相同。 我可以使用python run.py
来运行run.py脚本,但是我不能像您所说的那样运行python -m app
而不会遇到错误。 如果有帮助,则错误如下。
“无模块名的应用程序主 ;‘应用’是一个包,并不能直接执行。
我能够像我提到的那样运行python run.py
,但是我不能像您提到的那样运行python -m app
命令
我认为您的执行环境出了点问题。 这里有一些解释。
请参阅virtualenv的文档
如果您已按照本教程进行操作:
flask
目录是您的virtualenv, flask/bin
子目录,或者 flask\\Scripts
子目录。 我假设您在posix系统上。
要激活您的virtualenv,请运行:
source flask/bin/activate
您的提示应更改为: (flask)$
。
要列出已安装的库,请使用pip
:
pip list
确保您看到烧瓶。 本教程鼓励您安装很多Flask插件,因此有很多Flask-Something…
如果缺少Flask,请安装它:
pip install Flask
您的应用程序位于app
目录中,它具有__init__.py
文件(这是一个Python包)。
在此文件中,您具有:
from flask import Flask
app = Flask(__name__)
from app import views
在FlaskTest/
目录中,尝试像这样运行此脚本:
cd FlaskTest/ # if not in this directory
python -m app
这应该导入Flask
,实例化您的app
(但不要运行它),并导入views
模块。
如果app/views.py
存在,则应该没有错误。
=>至此,我们已经模拟了run.py
导入的内容…
现在,在FlaskTest/
目录中写入run.py
:
#!flask/bin/python
from app import app
app.run(debug=True)
像这样运行它:
python run.py
请注意,shebang #!flask/bin/python
是不寻常的,但应在本教程的上下文中起作用。
这应该启动您的http服务器…
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.