- 以推荐接口项目recommend_api为例
└── 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报错,多半是因为没有部署。
- 新建setup.py与项目recommend_api同一目录
└── news_recommend_api
├── recommend_api
└── **setup.py**
- 修改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