Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从virtualenv中的其他文件夹导入_Python_Flask_Pip_Virtualenv - Fatal编程技术网

Python 从virtualenv中的其他文件夹导入

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)中,我按照教程中的

我正在遵循,我遇到了一个问题,一旦我进入第二部分并重新构造我的文件夹结构以匹配他们的,我就无法导入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包

我的问题:如何引用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
命令。我认为您的执行环境出了问题。下面是一些解释

虚拟人 请参阅的文档

如果您已按照教程进行操作:

  • flask
    目录是您的virtualenv
  • 在posix系统上,您有一个子目录
    flask/bin
    ,或者
  • 在Windows系统上,您有一个子目录
    flask\Scripts
我假设您在posix系统上

要激活您的virtualenv,请运行:

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。