How to using PyPI publish a Python package

PyPI & Python package

https://pypi.org/

main

make a file that can be both imported as a module and run as a script.

To do this, place script code inside if name == "main".

This ensures that it won't be run if the file is imported.

# module.py
def function():
print("This is a module function") if __name__=="__main__":
print("This is a script")
# app.py
from module import function function();
$ python3 module.py
# "This is a script" $ python3 app.py
# This is a module function

When the Python interpreter reads a source file, it executes all of the code it finds in the file.

Before executing the code, it defines a few special variables.

For example, if the Python interpreter is running that module (the source file) as the main program, it sets the special name variable to have a value "main". If this file is being imported from another module, name will be set to the module's name.

directory structure

project/
LICENSE.txt
README.txt
setup.py
emoji/
__init__.py
module.py
module2.py
...

In Python, the term packaging refers to putting modules you have written in a standard format, so that other programmers can install and use them with ease.

This involves use of the modules setuptools and distutils.

The first step in packaging is to organize existing files correctly.

Place all of the files you want to put in a library in the same parent directory.

This directory should also contain a file called __init__.py, which can be blank but must be present in the directory.

This directory goes into another directory containing the readme and license, as well as an important file called setup.py.

init.py

setup.py

This contains the information necessary to assemble the package so it can be uploaded to PyPI and installed with pip (name, version, etc.).

from distutils.core import setup

setup(
name='project',
version='0.1dev',
packages=['emoji',],
license='MIT',
long_description=open('README.txt').read(),
)

After creating the setup.py file, upload it to PyPI, or use the command line to create a binary distribution (an executable installer).

To build a source distribution, use the command line to navigate to the directory containing setup.py, and run the command python setup.py sdist.

Run python setup.py bdist or, for Windows, python setup.py bdist_wininst to build a binary distribution.

Use python setup.py register, followed by python setup.py sdist upload to upload a package.

Finally, install a package with python setup.py install.

#  build a source distribution
$ python setup.py sdist # upload a package
$ python setup.py register # build a binary distribution
$ python setup.py bdist # install a package
$ python setup.py install

Packaging

package a Python script to executable file

However, many computer users who are not programmers do not have Python installed.

Therefore, it is useful to package scripts as executable files for the relevant platform, such as the Windows or Mac operating systems.

This is not necessary for Linux, as most Linux users do have Python installed, and are able to run scripts as they are.

for Windows, use py2exe, PyInstaller, cx_Freeze

For Macs, use py2app, PyInstaller, cx_Freeze

Python Style Guide

Zen of Python

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren't special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you're Dutch.

Now is better than never.

Although never is often better than right now.

If the implementation is hard to explain, it's a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea -- let's do more of those!

PEP 8

Python Enhancement Proposals (PEP)

PEP 8 is a style guide on the subject of writing readable code.

refs

https://pypi.org/manage/projects/

https://packaging.python.org/

https://www.sololearn.com/Course/Python/

https://www.sololearn.com/Play/Python

https://www.sololearn.com/Certificate/Python/jpg/

https://www.sololearn.com/Profile/3476348/Python



xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


How to using PyPI publish a Python package的更多相关文章

  1. Python package下载中遇到ReadTimeoutError: HTTPSConnectionPool?

    问题描述: Python package下载中遇到ReadTimeoutError: HTTPSConnectionPool? 问题解决: 方法1:继续重复下载 pip install virtual ...

  2. 在pypi上发布python包详细教程

    使用Python编程中Python的包安装非常方便,一般都是可以pip来安装搞定:pip install <package name>,我们自己写的python也可以发布在pypi上,很简 ...

  3. ros2中创建一个python package

    完整的python package的目录结构如下: source /opt/ros/dashing/setup.bash cd ros2_ws/src && ros2 pkg crea ...

  4. 利用setuptools发布Python程序到PyPI,为Python添砖加瓦

    pip install的东西从哪里来的? 从PyPI (Python Package Index)来的,官网是:  https://pypi.python.org/pypi/执行pip install ...

  5. Python package钓鱼

    Python package钓鱼   一.概述 在收录该文之后,知道创宇404安全实验室对该文中所提到的攻击方式进行跟进.整理分析原作者公布的钓鱼数据.值得一提的是,在跟进的过程中,我们发现了新的钓鱼 ...

  6. Ghost.py 0.1b3 : Python Package Index

    Ghost.py 0.1b3 : Python Package Index Ghost.py 0.1b3 Download Ghost.py-0.1b3.tar.gz Webkit based web ...

  7. pyrailgun 0.24 : Python Package Index

    pyrailgun 0.24 : Python Package Index pyrailgun 0.24 Download pyrailgun-0.24.zip Fast Crawler For Py ...

  8. qrcode 4.0.4 : Python Package Index

    qrcode 4.0.4 : Python Package Index qrcode 4.0.4 Download qrcode-4.0.4.tar.gz QR Code image generato ...

  9. bottle-session 0.3 : Python Package Index

    bottle-session 0.3 : Python Package Index bottle-session 0.3

随机推荐

  1. 一文打尽 Linux/Windows端口复用实战

    出品|MS08067实验室(www.ms08067.com) 本文作者:Spark(Ms08067内网安全小组成员) 定义:端口复用是指不同的应用程序使用相同端口进行通讯. 场景:内网渗透中,搭建隧道 ...

  2. RSA2对于所有商户都是单独一对一的,并且只支持开发平台密钥管理和沙箱

    蚂蚁金服开发者社区 https://openclub.alipay.com/club/history/read/1495 RSA 和 RSA2 签名算法区别 - 支付宝开放平台 https://ope ...

  3. 小步前进之WebService

    WebService Web Service 什么是Web Service? 为什么使用Web Service XML 什么是XML? 为什么使用XML? SOAP(Simple Object Acc ...

  4. Grafana+Influxdb+Telegraf监控mysql

    Grafana+Influxdb+Telegraf监控mysql 一.安装 1.1安装Grafana+influxdb+telegraf 1.2启动服务,添加开机启动 1.3查看grafana界面 二 ...

  5. Java JDBC 模糊查询 避免输入_,%返回全部数据

    Java JDBC 模糊查询 避免输入_,%返回全部数据 "SELECT * FROM employees WHERE INSTR(first_name,?)>0 " 仅供参 ...

  6. NetCore控制台程序-使用HostService和HttpClient实现简单的定时爬虫

    .NetCore承载系统 .NetCore的承载系统, 可以将长时间运行的服务承载于托管进程中, AspNetCore应用其实就是一个长时间运行的服务, 启动AspNetCore应用后, 它就会监听网 ...

  7. codeforces622E Ants in Leaves (dfs)

    Description Tree is a connected graph without cycles. A leaf of a tree is any vertex connected with ...

  8. Codeforces Round #683 (Div. 2, by Meet IT) D. Catching Cheaters (DP)

    题意:给你两个字符串,每次取它们的子串C和D,然后求LCS,得到的贡献为\(4*LCS(C,D)-|C|-|D|\),求最大贡献. 题解:首先应该了解\(O(n^2)\)的LCS的dp写法,然后在此基 ...

  9. 数位dp整理 && 例题HDU - 2089 不要62 && 例题 HDU - 3555 Bomb

    数位dp: 数位dp是一种计数用的dp,一般就是要统计一个区间[li,ri]内满足一些条件数的个数.所谓数位dp,字面意思就是在数位上进行dp.数位的含义:一个数有个位.十位.百位.千位......数 ...

  10. 找工作面试题记录与参考资料(Golang/C++/计算机网络/操作系统/算法等)

    记录下去年(2020年)找工作的面试题及参考资料. C++ 智能指针的实现原理 多态的实现原理[2] C++11/14/17新特性[3] 手写memcpy和memmove[4] 介绍下boost库 计 ...