整理代码的目录结构,方便打包和python的import,为了方便引用,需要将代码模块变成一个包,所以需要将功能代码用目录来整合方便引用,并且需要创建__init__文件,__init__中可以没有内容
图中红框中为我们所需要的文件,其中第一个红框中的parser_code为项目文件,另一个红框中的三个文件是需要我们自己进行配置、编写的,其中requirements.txt声明项目所需要的python第三方库,README.md解释此项目的使用方法。
parser_code项目文件的结构如下图:
其中metadata文件内为项目需要的数据库配置文件“\shared\mysql_config.json“。
详细结构如下:
cost_parser/
parser_code/
metadata/
shared/
mysql_config.json
__init__.py
bucketing.py
category.py
category_mysql.py
constants.py
controller.py
itemparser.py
normalizer.py
parser_lib.py
patternparser.py
pre_processor.py
test_main.py
testcase.py
util.py
README.md
requirements.txt
setup.py
setup.py是放在你包的根目录的,这一步至关重要,包括要发布的包名字,版本,license,描述,特性(classifier)等等。
from os import path as os_path
from setuptools import setup, find_packages
this_directory = os_path.abspath(os_path.dirname(__file__))
# 读取文件内容
def read_file(filename):
with open(os_path.join(this_directory, filename), encoding='utf-8') as f:
long_description = f.read()
return long_description
# 获取依赖
def read_requirements(filename):
return [line.strip() for line in read_file(filename).splitlines()
if not line.startswith('#')]
setup(
name='parsercode', # 包名
python_requires='>=3.4.0', # python环境
version='1.0.6', # 包的版本
description="Test publish own pypi.", # 包简介,显示在PyPI上
long_description=read_file('README.md'), # 读取的Readme文档内容
long_description_content_type="text/markdown", # 指定包文档格式为markdown
author="petzhang", # 作者相关信息
author_email='[email protected]',
url='http://geek.glodon.com/projects/BIGDATA/repos/cost_parser/browse',
# 指定包信息,还可以用find_packages()函数
packages=['parser_code'],
package_data = {
'parser_code': ['metadata/shared/*.json']
},#读取需要的数据文件
install_requires=[
'numpy',
'pandas',
'pymysql',
], # 指定需要安装的依赖
include_package_data=True,
license="MIT",
keywords=['parser_code'],
classifiers=[
'Intended Audience :: Developers',
'License :: OSI Approved :: MIT License',
'Natural Language :: English',
'Programming Language :: Python',
'Programming Language :: Python :: Implementation',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Topic :: Utilities'
],
)
.pypirc文件一般放在‘C:\Users\用户明’的目录下
[distutils]
index-servers = local
[local]
repository: https://packages.glodon.com/artifactory/api/pypi/PyPI-AIplatform-open
username: zhanghc
password: password
校验setup.py文件是否正确:(一般返回‘running check’,即没问题)
张华超@DESKTOP-5QA47CC MINGW64 /d/git_chendian/cost_parser (petzhang)
$ python setup.py check
running check
上传
张华超@DESKTOP-5QA47CC MINGW64 /d/git_chendian/cost_parser (petzhang)
$ python setup.py sdist bdist_wheel upload -r local
执行成功后会得到如下三个文件:
此时,私服上已经有了我们所上传的第三方库
#执行如下命令进行安装
C:\Users\张华超>python -m pip install parsercode -i https://packages.glodon.com/artifactory/api/pypi/PyPI-AIplatform-open/simple&username=zhanghc&password='域密码'
在python中导入验证
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
#导入模块
>>> from parser_code import test_main
'''
因为test_main.testOneline函数有以下六个参数:
mtype,dbid, item_code, meta_path, specname, spec
除了meta_path,其他的都为数据,meta_path找到自己本地"metadata"的目录
例如我本地的目录为“D:\软件\python3.7\Lib\site-packages\parser_code\metadata”
'''
>>> test_main.testOneline('DB','1710','031001001','D:\软件\python3.7\Lib\site-packages\parser_code\metadata','穿楼板套管','1.名称:穿楼板套管፨2.规格型号:DN100')
#运行结果如下
{'Release Version': '20200314', 'Release Date': '2020-03-14'} MetaData:mysql , DBID: 1710 , CHAPTER: 0310
DB connection is closed.
spec: 穿楼板套管;፨1.名称:穿楼板套管፨2.规格型号:DN100
########## result:
压力试验:
吹洗及吹扫设计要求:
安装部位:
管道材质:{管道材质(0310_管道材质):穿楼板套管}
规格(公称直径):{公称直径(公称直径):dn100}
输送介质:
连接形式:
除锈、刷油、防腐处理:
未能分出类别的值:{}
……