跳转至

Pip

发布自己的pip包

一、注册自己的 PyPi 帐号

也可以是自己搭的 PyPi私服仓库的账号

二、依据自己的项目目录,创建setup.py

如下图所示,agent_cli是我整体的项目,我想要将pip-test目录下的代码打包上传到Pypi仓库中;

在pip-test的同级目录,创建setup.py文件

三、 编写自己的setup.py文件

from setuptools import setup, find_packages

setup(
    name='tsjPython',  # 打包后的包文件名
    version='0.1',  # 版本号
    keywords=("tsj"),    # 关键字
    description='personal code for tsj',  # 说明
    long_description="none",  # 详细说明
    license="MIT Licence",  # 许可
    url='http://home.ustc.edu.cn/~shaojiemike',
    author='Shaojie Tan',
    author_email='[email protected]',
    # packages=find_packages(),     #这个参数是导入目录下的所有__init__.py包
    include_package_data=True,
    platforms="any",
    install_requires=['termcolor',
                      'plotille'],    # 引用到的第三方库
    # py_modules=['pip-test.DoRequest', 'pip-test.GetParams', 'pip-test.ServiceRequest',
    #             'pip-test.ts.constants', 'pip-test.ac.Agent2C',
    #             'pip-test.ts.ttypes', 'pip-test.ac.constants',
    #             'pip-test.__init__'],  # 你要打包的文件,这里用下面这个参数代替
    packages=['tsjPython']  # 这个参数是导入目录下的所有__init__.py包
)

四、打包自己的项目

执行下述两条命令

python setup.py build    #执行此命令后,会生成上面图片中build的目录,目录层级是  build/lib/pip-test,  pip-test目录下就是你打包文件解压后的结果,可以在此查看打包的代码是否完整

python setup.py sdist    # 执行此命令后,就会在dist目录下生成压缩包文件 .tar.gz

五、上传到PyPi服务器

在上传前,要建一个文件,$HOME/.pypirc$HOME目录在linux或者mac系统下就是~/目录。在这里建一个 .pypirc文件。里边的内容如下:

[distutils]
index-servers = pypi

[pypi]
username:你的PyPi用户名
password:你的PyPi密码

或者使用token.

注册好之后,生成一个 token:https://pypi.org/manage/account/#api-tokens。由于我们是要上传新项目,所以不要限制 scope 到特定的项目。

[pypi]
username = __token__
password = <换成你刚刚复制下来的 token, 包括 `pypi-` 前缀>

提前安装 py -m pip install --upgrade twine

执行此命令: twine upload dist/XXXXX-0.1.0.tar.gz 上传你刚刚打包好的压缩包

六、安装使用

使用 pip install XXX 就可以轻松使用

问题

requests.exceptions.ProxyError: HTTPSConnectionPool(host='upload.pypi.org', port=443): Max retries exceeded with url: /legacy/ (Caused by ProxyError('Cannot connect to proxy.', OSError(0, 'Error')))

不要挂代理

开发测试包

如果为了测试而上传代码,会占用版号。

可以通过先安装在本地来实现

pip install packageName
pip uninstall packageName
使用 setup.py 安装的包会被复制到当前环境的 site-packages 目录下,这意味着,一旦我们修改了包的源代码,就需要重新安装它。

这常常是集中开发过程中的一个问题,因为很容易忘记需要再次执行安装,这就是为什么 setuptools 提供了一个额外的 develop 命令的重要原因。

develop 命令的完整格式为Python setup.py develop,该命令允许我们在开发模式下安装包,它会在部署目录(site-packages)时创建一个指向项目源代码的特殊链接,而不是将整个包复制过去,从而实现在编辑包的源代码之后无需再重新安装,并且它在 sys.path 中可用,就像正常安装一样。

pip 也支持用这种模式来安装包,这个安装选项叫作可编辑模式,可以使用 install 命令的 -e 参数来启用,代码格式如下: pip install -e 包路径

需要进一步的研究学习

暂无

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

参考文献

https://www.cnblogs.com/weisunblog/p/13307174.html