python-flask一些资料

Flask项目可安装化官方地址

https://dormousehole.readthedocs.io/en/latest/tutorial/install.html
在于你可以在任何目录通过flask run来启动你的项目

Flask部署方式

https://dormousehole.readthedocs.io/en/latest/deploying/index.html

setup.py
#项目可视化-描述文件
from setuptools import find_packages,setup

setup(
    name='flask',
    version='1.0.0',
    packages=find_packages(),
    include_package_data=True,
    zip_safe=False,
    install_requires=[
        'flask',
    ],
)
####################
(venv) [root@bogon flask-tutorial]# cat MANIFEST.in 
include flaskr/schema.sql
graft flaskr/static
graft flaskr/templates
global-exclude *.pyc

python官方打包项目

https://packaging.python.org/tutorials/packaging-projects/

FLask测试代码

使用 pytest 和 coverage 来进行测试和衡量代码

pip install pytest coverage

python中文件夹作为package,导入模块(导入隔壁文件夹下的模块)

这是由于相对导入时,文件夹实质上充当的是package,也就是包的角色(比如我们常用的numpy、pandas都是包)。如果python解释器没有认同该文件夹是package,那么这就是一个普通的文件夹,无法实现相对导入。
文件夹作为package需要满足如下两个条件:
文件夹中必须存在有__init__.py文件,可以为空。
不能作为顶层模块来执行该文件夹中的py文件。

python导入包中函数

我的tests/configtest.py 想从flaskr包(flaskr目录下有__init__.py文件)中导入一个函数,一直提示找不到这个包
在这里插入图片描述
##问题原因
原来加载时并没有去找flaskr这个目录
代码中先加入俩行

import sys
sys.path.append(os.path.abspath('/opt/flask-tutorial/flaskr'))
print(sys.path)
#########输出结果
(py3) [root@localhost flask-tutorial]# pytest 
['/opt/flask-tutorial/tests', '/opt/py3/bin', '/usr/local/python3/lib/python36.zip', '/usr/local/python3/lib/python3.6', '/usr/local/python3/lib/python3.6/lib-dynload', '/opt/py3/lib/python3.6/site-packages']
ImportError while loading conftest '/opt/flask-tutorial/tests/conftest.py'.
tests/conftest.py:10: in <module>
    from flaskr import create_app
E   ModuleNotFoundError: No module named 'flaskr'
没有我的/opt/flask-tutorial/flaskr目录,所以需要添加该目录

sys.path.append(os.path.abspath())

import sys
sys.path.append(os.path.abspath('/opt/flask-tutorial/flaskr'))
print(sys.path)
#######输出结果
(py3) [root@localhost flask-tutorial]# pytest 
['/opt/flask-tutorial/tests', '/opt/py3/bin', '/usr/local/python3/lib/python36.zip', '/usr/local/python3/lib/python3.6', '/usr/local/python3/lib/python3.6/lib-dynload', '/opt/py3/lib/python3.6/site-packages', '/opt/flask-tutorial/flaskr']
ImportError while loading conftest '/opt/flask-tutorial/tests/conftest.py'.
tests/conftest.py:9: in <module>
    from flaskr import create_app
E   ModuleNotFoundError: No module named 'flaskr'
(py3) [root@localhost flask-tutorial]# coverage run -m pytest
====================================================================== test session starts =======================================================================
platform linux -- Python 3.6.12, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
rootdir: /opt/flask-tutorial, configfile: setup.cfg, testpaths: tests
collected 9 items / 1 error / 8 selected                                                                                                                         

============================================================================= ERRORS =============================================================================
______________________________________________________________ ERROR collecting tests/test_auth.py _______________________________________________________________
ImportError while importing test module '/opt/flask-tutorial/tests/test_auth.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/local/python3/lib/python3.6/importlib/__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_auth.py:7: in <module>
    from flask import g,seesion
E   ImportError: cannot import name 'seesion'
------------------------------------------------------------------------ Captured stdout -------------------------------------------------------------------------
['/opt/flask-tutorial/tests', '', '/usr/local/python3/lib/python36.zip', '/usr/local/python3/lib/python3.6', '/usr/local/python3/lib/python3.6/lib-dynload', '/opt/py3/lib/python3.6/site-packages', '/opt/flask-tutorial/flaskr']
======================================================================== warnings summary ========================================================================
tests/test_blog.py:29
  /opt/flask-tutorial/tests/test_blog.py:29: PytestUnknownMarkWarning: Unknown pytest.mark.parmetrize - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.html
    @pytest.mark.parmetrize('path',(

tests/test_blog.py:52
  /opt/flask-tutorial/tests/test_blog.py:52: PytestUnknownMarkWarning: Unknown pytest.mark.parmetrize - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.html
    @pytest.mark.parmetrize('path',(

-- Docs: https://docs.pytest.org/en/stable/warnings.html
==================================================================== short test summary info =====================================================================
ERROR tests/test_auth.py
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
================================================================== 2 warnings, 1 error in 0.12s =================================================================

好奇怪,我已经添加包路径,还是提示找不到

Flask两种配置路由的方式

from flask import Flask
app = Flask(__name__)
@app.route('/hello')   # 方式一
def hello_world():
    return 'Hello World!'

# app.add_url_rule('/hello', viw_func=hello_world)   # 方式二

if __name__ == '__main__':
    app.run()

猜你喜欢

转载自blog.csdn.net/qq_44379042/article/details/121206690