Python项目工程化

cooolr 于 2020-12-01 发布

项目结构

└── news_recommend_api
    ├── deploy.pyc    # 自动化部署工具
    ├── docs    # 文档目录
    │   └── 压力测试.md
    ├── README.md
    ├── recommend_api    #项目目录
    │   ├── api    #接口层
    │   │   ├── content_rank_api.py
    │   │   ├── search_review_api.py
    │   │   └── video_classifier_api.py
    │   ├── config    #配置文件层
    │   │   ├── develop.py
    │   │   ├── develop_uat.py
    │   │   ├── __init__.py
    │   │   ├── local.py
    │   │   └── produce.py
    │   ├── db_handle    #数据库操作层
    │   │   ├── crawler_db.py
    │   │   ├── data.py
    │   │   ├── __init__.py
    │   │   ├── newsbz_db.py
    │   │   ├── nlp_db.py
    │   │   └── recommend_db.py
    │   ├── __init__.py
    │   ├── mylogger.py
    │   ├── offline    #离线处理层
    │   │   ├── add_need_deal_news_into_redis.py
    │   │   ├── __init__.py
    │   │   ├── picture_model_trans.py
    │   │   └── tfidf_offline.py
    │   ├── service    #业务层
    │   │   ├── content_rank_service.py
    │   │   ├── search_review_service.py
    │   │   └── video_classifier_service.py
    │   └── tools    #工具层
    │       ├── __init__.py
    │       └── toutiao_comment.py
    ├── requirements.txt    #依赖的第三方库
    ├── setup.py    #工程化部署: python setup.py develop
    ├── supervisor.d    #supervisorctl配置文件
    │   ├── content_rank.ini
    │   ├── search_review.ini
    │   └── video-classifier.ini
    └── tests    #测试类
        ├── content_rank_test.py
        ├── search_review_test.py
        └── video_classifier_test.py

模块引用

from recommend_api.service.content_rank_service import ContentRankService

from .produce import *

import os
import sys
sys.path.insert(0, os.path.dirname(__file__))  # __file__为当前运行文件的绝对路径

from produce import *

项目部署[工程化]

PyCharm会处理好项目工程化的问题,但是放到服务器运行就import报错,多半是因为没有部署。

└── news_recommend_api
    ├── recommend_api
    └── **setup.py**
# -*- coding: utf-8 -*-

from setuptools import setup, find_packages

setup(
    name="recommend_api",
    version="0.0.1",
    description="recommend_api",
    long_description="recommend_api",
    author="lr",
    url="",
    license="",
    packages=find_packages()
)
python setup.py develop

到这一步就可以从项目路径引用模块了

from recommend_api.service.content_rank_service import ContentRankService