感觉还是Python用的人比较多,至少入门简单,使用也方便。
现在,我要发布一个Python应用,包名you-live,console命令you-live。
记录一下整个过程。
参考
关于相对引用
因为某些问题,我把顶层的文件夹改了个名,于是引发了一些列的import错误。
此处应有相对引用,方便改动。具体就不说了,知道有这回事就行。
from ..src.folder1 import file1
from .folder1 import file2
另外,想引用同目录所在的包,应该注意以下要素:
import .folder1 	×
from . import folder1	 √
setup.py
要素过多,但一次填写后续项目基本大同小异。
对我而言,主要关心packages、requires、entry_points
import setuptools
import os
from live_recorder import version
with open("README.md", "r", encoding = 'utf-8') as fh:
    long_description  =  fh.read()
def find_packages(*tops):
    packages = []
    for d in tops:
        for root, dirs, files in os.walk(d, followlinks=True):
            if '__init__.py' in files:
                packages.append(root)
    return packages
REQ  =  ['PyExecJS', 'requests']
setuptools.setup(
    name = "you-live",
    version = version.__version__,
    description = version.__descriptrion__,
    author = "NiceLee",
    author_email = "lijia0732@sina.com",
    license = "MIT",
    long_description = long_description,
    long_description_content_type = "text/markdown",
    url = "https://github.com/nICEnnnnnnnLee/LiveRecorder",
    requires = REQ,
    install_requires = REQ,
    zip_safe = True,
    packages = find_packages('live_recorder'),
    classifiers = [
        "Development Status :: 4 - Beta",
        "Intended Audience :: Developers",
        "Intended Audience :: End Users/Desktop",
        "Environment :: Console",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
        "Programming Language :: Python",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3 :: Only",
        "Programming Language :: Python :: 3.0",
        "Programming Language :: Python :: 3.1",
        "Programming Language :: Python :: 3.2",
        "Programming Language :: Python :: 3.3",
        "Programming Language :: Python :: 3.4",
        "Programming Language :: Python :: 3.5",
        "Programming Language :: Python :: 3.6",
        "Programming Language :: Python :: 3.7",
        "Topic :: Internet",
        "Topic :: Internet :: WWW/HTTP",
        "Topic :: Multimedia",
        "Topic :: Multimedia :: Sound/Audio",
        "Topic :: Multimedia :: Video"
    ],
    entry_points={
        "console_scripts": ["you-live=live_recorder.__main__:main"]
    },
)
文件生成
- 确保前置环境OK
    
python3 -m pip install --user --upgrade setuptools wheel - 生成分发文件
    
python3 setup.py sdist bdist_wheel 
测试分发
- 正式发布前的可选操作,确保拥有Test PyPI账号
 - 确保前置环境OK
    
python3 -m pip install --user --upgrade twine - 将
dist文件夹下的文件发布到TestPypython3 -m twine upload --repository-url https://test.pypi.org/legacy/ dist/* - 从TestPy安装包you-live
    
python3 -m pip install --upgrade --index-url https://test.pypi.org/simple/ you-live - (可选)卸载you-live
    
python3 -m pip uninstall you-live 
正式分发
- 确保拥有PyPI账号
 - (可选)将账号写入配置
    
- 编辑
~/.pypirc 
[distutils] index-servers = pypi [pypi] username:{username} password:{password} - 编辑
 - 确保前置环境OK
    
python3 -m pip install --user --upgrade twine - 将
dist文件夹下的文件发布到pypipython3 -m twine upload dist/* - 从pypi安装包you-live
    
python3 -m pip install --upgrade you-live