@songying
2018-07-18T12:20:49.000000Z
字数 2833
阅读 1412
Git
- setup.py-- mypackage-- __init__.py-- __version__.py-- core.py-- LICENSE-- MANIFEST.in-- README.md-- setup.py
setup.py
#!/usr/bin/env python# -*- coding: utf-8 -*-# Note: To use the 'upload' functionality of this file, you must:# $ pip install twineimport ioimport osimport sysfrom shutil import rmtreefrom setuptools import find_packages, setup, Command# Package meta-data.""" 基本信息"""NAME = 'mypackage'DESCRIPTION = 'My short description for my project.'URL = 'https://github.com/me/myproject'EMAIL = 'me@example.com'AUTHOR = 'Awesome Soul'REQUIRES_PYTHON = '>=3.6.0'VERSION = None# What packages are required for this module to be executed?REQUIRED = [# 'requests', 'maya', 'records',]"""The rest you shouldn't have to touch too much :)"""# ------------------------------------------------# Except, perhaps the License and Trove Classifiers!# If you do change the License, remember to change the Trove Classifier for that!here = os.path.abspath(os.path.dirname(__file__))# 导入README.md文件并作为描述# Note: this will only work if 'README.md' is present in your MANIFEST.in file!with io.open(os.path.join(here, 'README.md'), encoding='utf-8') as f:long_description = '\n' + f.read()# Load the package's __version__.py module as a dictionary.about = {}if not VERSION:with open(os.path.join(here, NAME, '__version__.py')) as f:exec(f.read(), about)else:about['__version__'] = VERSIONclass UploadCommand(Command):"""Support setup.py upload."""description = 'Build and publish the package.'user_options = []@staticmethoddef status(s):"""Prints things in bold."""print('\033[1m{0}\033[0m'.format(s))def initialize_options(self):passdef finalize_options(self):passdef run(self):try:self.status('Removing previous builds…')rmtree(os.path.join(here, 'dist'))except OSError:passself.status('Building Source and Wheel (universal) distribution…')os.system('{0} setup.py sdist bdist_wheel --universal'.format(sys.executable))self.status('Uploading the package to PyPi via Twine…')os.system('twine upload dist/*')self.status('Pushing git tags…')os.system('git tag v{0}'.format(about['__version__']))os.system('git push --tags')sys.exit()# Where the magic happens:setup(name=NAME,version=about['__version__'],description=DESCRIPTION,long_description=long_description,long_description_content_type='text/markdown'author=AUTHOR,author_email=EMAIL,python_requires=REQUIRES_PYTHON,url=URL,packages=find_packages(exclude=('tests',)),# If your package is a single module, use this instead of 'packages':# py_modules=['mypackage'],# entry_points={# 'console_scripts': ['mycli=mymodule:cli'],# },install_requires=REQUIRED,include_package_data=True,license='MIT',classifiers=[# Trove classifiers# Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers'License :: OSI Approved :: MIT License','Programming Language :: Python','Programming Language :: Python :: 3','Programming Language :: Python :: 3.6','Programming Language :: Python :: Implementation :: CPython','Programming Language :: Python :: Implementation :: PyPy'],# $ setup.py publish support.cmdclass={'upload': UploadCommand,},)
