python venv setup ModuleNotFoundError:尽管验证了虚拟环境中可用的模块,但没有名为“ sqlalchemy”的模块

时间:2018-07-27 07:10:34

标签: python flask sqlalchemy setuptools python-venv

好的,我有点茫然。我刚接触Python,想用Flask和SQLAlchemy做一个简单的REST应用。

显然我错过了一些步骤,但是我看不到它,有人可以看看我所缺少的吗?

这些是我到目前为止已完成的步骤:

  1. 为我的项目创建一个文件夹
  2. 在我的项目文件夹中使用以下内容创建setup.py

    从setuptools导入设置

    setup(
      name='pyrecipe',
      version='0.0.1',
      packages=['pyrecipe'],
      include_package_data=True,
      install_requires=[
        'click',
        'flask',
        'sqlalchemy',
        'flask-sqlalchemy',
        'gunicorn',
        'itsdangerous',
        'jinja2',
        'markupsafe',
        'werkzeug',
      ],
    )
    
  3. 使用python -m venv venv创建venv并使用source venv/bin/active激活它

  4. 使用pip install -e .

  5. 安装软件包
  6. 使用export FLASK_APP=pyrecipe && export FLASK_ENV=dev

  7. 设置烧瓶环境
  8. 使用flask run运行应用 我得到以下输出

  

错误:导入“ pyrecipe”时,引发了ImportError:

     

回溯(最近通话最近一次):

     

locate_app中的文件“ /usr/lib/python3.6/site-packages/flask/cli.py”,第235行

__import__(module_name)
     

文件

中的第4行“ /home/cvelin/code/python/pyrecipe/pyrecipe/init.py”
from pyrecipe.database import init_db
     

中的文件“ /home/cvelin/code/python/pyrecipe/pyrecipe/database.py”,第1行
from sqlalchemy import create_engine
     

ModuleNotFoundError:没有名为“ sqlalchemy”的模块

初始化 .py内容

from flask import Flask
app = Flask(__name__)

from pyrecipe.database import init_db

init_db()

import pyrecipe.views

database.py内容

from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('postgresql://postgres:postgres@localhost/postgres', convert_unicode=True)
db_session = scoped_session(sessionmaker(autocommit=False,
                                         autoflush=False,
                                         bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()

def init_db():
    # import all modules here that might define models so that
    # they will be registered properly on the metadata.  Otherwise
    # you will have to import them first before calling init_db()
    import pyrecipe.models
    Base.metadata.create_all(bind=engine)

运行pip list显示所有模块均已安装:

  

软件包版本位置

     
     

点击6.7
  烧瓶1.0.2
  Flask-SQLAlchemy 2.3.2
  古尼康19.9.0
  危险0.24
  Jinja2 2.10
  MarkupSafe 1.0
  pip 18.0
  pyrecipe 0.0.1 / home / cvelin / code / python / pyrecipe   setuptools 39.0.1
  SQLAlchemy 1.2.10
  Werkzeug 0.14.1

并使用python交互式解释器按预期工作

  从sqlalchemy导入

>>>导入create_engine

     

>>>

0 个答案:

没有答案