Python 从virtualenv中的其他文件夹导入
我正在遵循,我遇到了一个问题,一旦我进入第二部分并重新构造我的文件夹结构以匹配他们的,我就无法导入Flask 我当前的文件夹结构如下Python 从virtualenv中的其他文件夹导入,python,flask,pip,virtualenv,Python,Flask,Pip,Virtualenv,我正在遵循,我遇到了一个问题,一旦我进入第二部分并重新构造我的文件夹结构以匹配他们的,我就无法导入Flask 我当前的文件夹结构如下 /FlaskTest /app /static, templates etc /flask /virtualenv folders etc /tmp run.py 据我所知,除了顶级目录的命名之外,文件夹结构是相同的 在我的_init__.py文件(/app/_init__.py)中,我按照教程中的
/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包
我的问题:如何引用flask/site软件包的子文件夹
我已经通读了python,从第一次通读它的时候我可以理解它,我可能需要做一些类似于从flask导入flask.flask或类似的事情
更新:所以在对目录进行cd'ing并检查pip列表后,我意识到flask无法访问我的应用程序目录。我在app目录中运行了pip安装flask。现在我的站点运行了,但我不确定这是否是使用Python进行操作的最佳实践。请说明安装软件包的最佳实践以及软件包的存放位置
更新2:创建名为standalone的目录后。在这个文件夹中,我创建了一个名为standalone test的虚拟环境。有一次,我这样做了,我也mkdir'ed应用程序和复制它的内容从烧瓶测试,这样的代码将是相同的。我可以使用python run.py
运行run.py脚本,但我不能像您所说的那样运行python-m app
,而不会出错。如果有帮助,错误如下所示
“没有模块名app.main;“app”是一个包,不能直接执行
正如我所提到的,我能够运行
python run.py
,但是我不能像您所提到的那样运行python-m app
命令。我认为您的执行环境出了问题。下面是一些解释
虚拟人
请参阅的文档
如果您已按照教程进行操作:
目录是您的virtualenvflask
- 在posix系统上,您有一个子目录
,或者flask/bin
- 在Windows系统上,您有一个子目录
flask\Scripts
source flask/bin/activate
您的提示应该更改为:(flask)$
要列出已安装的库,请使用pip
:
pip list
确保你看到Flask。教程鼓励你安装很多Flask插件,所以有很多Flask插件
如果烧瓶丢失,请安装:
pip install Flask
运行你的应用程序
您的应用程序位于app
目录中,它有一个\uuuu init\uuuu.py
文件(它是一个Python包)
在此文件中,您有:
from flask import Flask
app = Flask(__name__)
from app import views
从FlaskTest/
目录中,尝试按如下方式运行此脚本:
cd FlaskTest/ # if not in this directory
python -m app
python run.py
这应该导入烧瓶
,实例化你的应用程序
(但不要运行它),导入视图
模块
如果app/views.py
存在,则应该没有错误
=>此时,我们模拟了run.py
导入的内容
现在在FlaskTest/
目录中编写run.py
:
#!flask/bin/python
from app import app
app.run(debug=True)
按如下方式运行:
cd FlaskTest/ # if not in this directory
python -m app
python run.py
请注意,shebang#!flask/bin/python
是不寻常的,但应该在本教程的上下文中使用
这将启动您的http服务器…您需要从
FlaskTest/
子目录运行命令。我肯定会再试一次,但我只是通过运行pip install virtualenv安装了它,然后创建了一个文件夹,运行了create命令,然后运行了activate.bat脚本(Windows系统).Side-question,拥有init.py文件会使目录成为一个包?我将尝试创建另一个虚拟环境,看看当我尝试运行教程中的安装命令时会有什么结果。因此,我进行了一些实验,当我在虚拟环境的上下文中时(我的提示符旁边有虚拟环境的名称),我将pip安装flask,它将全局安装。据我所知,这不是正常行为。我将在另一个目录中重新开始教程。并共享我的结果/经验。用我的测试/结果更新OP。