pypiのインストールライブラリを作成する
Pythonに触れてから数ヶ月が経ち、主な開発言語はJavaですが、Pythonにも夢中になりました.Pythonがなぜこんなに怒っているのかはよく知られていますが、その大きな原因の一つは豊富で強力なライブラリサポートがあり、これまで他人のライブラリを使っていたことですが、今回はブロガーも自分で配布版を作ってみました.
ダウンロードアドレス
作成したのは命令行の下の翻訳ツールで、英漢中の単語、文の相互訳を実現することができます.もちろん、サードパーティのインタフェースも借りています.
pip install mytranslator
まず、次のファイルディレクトリを見てみましょう.
これが比較の基礎です.必要なファイルは
setup.py
とmytranslator
です.他の必要でないオプションです.その他の詳細については、以下を参照してください.https://packaging.python.org/distributing/#uploading-your-project-to-pypi https://wiki.python.org/moin/TestPyPI. 英語だらけなので、心に耐えてゆっくり読む必要がありますよ.
setup.py
私たちがパッケージ化したり、Pythonのソースコードをインストールしたりするときに依存しているのは、このファイルで、1つのPythonライブラリをインストールして使用するすべての情報が構成されています.重要です.公式の解釈も詳しいので、人の公式配置を見て、必要に応じて調整すればいいです.
"""A setuptools based setup module. See: https://packaging.python.org/en/latest/distributing.html https://github.com/pypa/sampleproject """
# Always prefer setuptools over distutils
from setuptools import setup, find_packages
# To use a consistent encoding
from codecs import open
from os import path
here = path.abspath(path.dirname(__file__))
# Get the long description from the README file
with open(path.join(here, 'README.rst'), encoding='utf-8') as f:
long_description = f.read()
setup(
name='sample',
# Versions should comply with PEP440. For a discussion on single-sourcing
# the version across setup.py and the project code, see
# https://packaging.python.org/en/latest/single_source_version.html
version='1.2.0',
description='A sample Python project',
long_description=long_description,
# The project's main homepage.
url='https://github.com/pypa/sampleproject',
# Author details
author='The Python Packaging Authority',
author_email='[email protected]',
# Choose your license
license='MIT',
# See https://pypi.python.org/pypi?%3Aaction=list_classifiers
classifiers=[
# How mature is this project? Common values are
# 3 - Alpha
# 4 - Beta
# 5 - Production/Stable
'Development Status :: 3 - Alpha',
# Indicate who your project is intended for
'Intended Audience :: Developers',
'Topic :: Software Development :: Build Tools',
# Pick your license as you wish (should match "license" above)
'License :: OSI Approved :: MIT License',
# Specify the Python versions you support here. In particular, ensure
# that you indicate whether you support Python 2, Python 3 or both.
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
],
# What does your project relate to?
keywords='sample setuptools development',
# You can just specify the packages manually here if your project is
# simple. Or you can use find_packages().
packages=find_packages(exclude=['contrib', 'docs', 'tests']),
# Alternatively, if you want to distribute just a my_module.py, uncomment
# this:
# py_modules=["my_module"],
# List run-time dependencies here. These will be installed by pip when
# your project is installed. For an analysis of "install_requires" vs pip's
# requirements files see:
# https://packaging.python.org/en/latest/requirements.html
install_requires=['peppercorn'],
# List additional groups of dependencies here (e.g. development
# dependencies). You can install these using the following syntax,
# for example:
# $ pip install -e .[dev,test]
extras_require={
'dev': ['check-manifest'],
'test': ['coverage'],
},
# If there are data files included in your packages that need to be
# installed, specify them here. If using Python 2.6 or less, then these
# have to be included in MANIFEST.in as well.
package_data={
'sample': ['package_data.dat'],
},
# Although 'package_data' is the preferred approach, in some case you may
# need to place data files outside of your packages. See:
# http://docs.python.org/3.4/distutils/setupscript.html#installing-additional-files # noqa
# In this case, 'data_file' will be installed into '<sys.prefix>/my_data'
data_files=[('my_data', ['data/data_file'])],
# To provide executable scripts, use entry points in preference to the
# "scripts" keyword. Entry points provide cross-platform support and allow
# pip to create the appropriate form of executable for the target platform.
entry_points={
'console_scripts': [
'sample=sample:main',
],
},
)
ソースパッケージ
ここではパッケージの概念に関係していますが、一般的には
__init__.py
ファイルを含むフォルダですので、一応このように理解してください.このフォルダには、私たちのコードを実行できる最小コンポーネント、関数ライブラリが含まれています.これで一つのバッグと呼ぶことができます.ブロガーのここの小道具は比較的簡単で、以下の通りです.
E:\Code\Python\DataStructor\translate\mytranslator
2016/10/08 15:52 <DIR> .
2016/10/08 15:52 <DIR> ..
2016/09/29 09:12 50 mytranslate.bat
2016/10/08 15:50 1,221 translate.py
2016/10/08 15:51 151 __init__.py
3 1,422
2 87,527,870,464
その他のファイル
他のファイルは、ユーザーがこのプロジェクトをより深く理解するために存在し、パッケージにはあまり関連していませんが、重要ではありません.特にREADME.mdファイルとLICENCEファイルは、非常に価値があります.LICENCEの概念はよく知られていないかもしれませんが、興味があるのはブロガーが前に転載した文章を参考にすることができます.http://blog.csdn.net/marksinoberg/article/details/52337214
様々なオープンソースプロトコルは、以下にまとめることができます.
(写真はチェン一峰ブログに転載)
作成プロセス
ブロガーがこの小道具を作る過程について話しましょう.
まず出場するのはsetupに違いない.pyしました.次のようになります.
# coding:utf-8
from setuptools import setup, find_packages
setup(
name='mytranslator',
description='Simple translator in English and Chinese, easier to use',
url='https://github.com/guoruibiao/MyTranslator',
version='1.0.1',
license='MIT',
packages=find_packages(),
entry_points = {
"console_points": ['trans = mytranslator.translate:main']
},
)
そしてLICENCE
MIT License
Copyright (c) 2016
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
これで基本的にいいです.
登録
登録する前に、公式サイトにアカウントを登録したほうがいいです.これは今後、自分のライブラリをアップロードするのに役立つからです.
公式サイトは以下の通りです.https://pypi.python.org/pypi/
ユーザー名はASCIIでサポートされており、パスワードはアルファベットに数字を加えればよいことに注意してください.完成したら次の仕事ができます.
プロジェクトのルートディレクトリに次のように入力します.
python setup.py register sdist upload
次に、デフォルトで数字1を選択するオプションがあります.私たちは自分の状況で入力することができます.ブロガーはアカウントを登録したので1を選択した.
最後に、ライブラリがpypiにアップロードされたことを示す文字が表示されます.
running upload
Submitting dist\mytranslator-1.0.1.zip to https://pypi.python.org/pypi
Server response (200): OK
この時、自分のプロジェクトのフォルダの下に何かが増えていることに気づきます.基本的に下図のようになります.
テスト
続いてPython 2.7の仲間たちは自分でブロガーのこのライブラリをダウンロードすることができます.何の役に立つのでしょうか?
実は命令行の下で英語の中国語の単語、文の翻訳を実現することができます.さらに、Windowについては、符号化のサポートが特に最適化されている.詳しくはブロガーの前の記事を参考にしてくださいhttp://blog.csdn.net/marksinoberg/article/details/52701650
インストール時に、以下の文字が表示されます.おめでとうございます.ブロガーのライブラリをインストールできました.
(temp) E:\Code\Python\temp\Scripts>pip install mytranslator
Collecting mytranslator
Downloading mytranslator-1.0.1.zip
Building wheels for collected packages: mytranslator
Running setup.py bdist_wheel for mytranslator ... done
Stored in directory: C:\Users\Administrator\AppData\Local\pip\Cache\wheels\ec\29\22\f37da8b8f8fef3
a08472f50c0a084995236ba10cf8af52bb20
Successfully built mytranslator
Installing collected packages: mytranslator
Successfully installed mytranslator-1.0.1
まとめ
例によって、最後の点はこの文章の主な内容を振り返ることです.
自分のPython配布版ライブラリを作成するために必要な知識.および詳細なプロセスの紹介.
知識点は難しくなく、試してみることに重点を置いて、今すぐ手を出して、あなたの配布版を作ってみましょう.