之前其实开发了自己的包,想写点轮子。但是那个时候并没有。按照对象编程的思想,打算重构并拓展常用内容 from PIA(uniPIM) Project。
在 Python 中,__all__
是一个特殊变量,用于定义模块在 import *
语句下导出的公共接口。它通常出现在包的 __init__.py
文件或模块文件中,指定该模块或包的哪些内容可以被外部模块访问。
用法
当在 __init__.py
文件中定义 __all__
时,例如:
1
| __all__ = ["module_a", "module_b", "some_function"]
|
它的作用是,当用户执行 from package_name import *
时,只有 __all__
列表中的项会被导入到当前命名空间。
示例
假设有一个包 mypackage
,目录结构如下:
1 2 3 4
| mypackage/ ├── __init__.py ├── module_a.py └── module_b.py
|
在 __init__.py
中设置 __all__
:
1 2 3 4 5
| __all__ = ["module_a", "module_b"]
import mypackage.module_a import mypackage.module_b
|
然后在使用时:
仅 module_a
和 module_b
会被导入。
发布自己的pip包
注册自己的 PyPi 帐号
也可以是自己搭的 PyPi私服仓库的账号[^1]
依据自己的项目目录,创建setup.py
如下图所示,agent_cli是我整体的项目,我想要将pip-test目录下的代码打包上传到Pypi仓库中;
在pip-test的同级目录,创建setup.py文件

编写自己的setup.py文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| 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]', include_package_data=True, platforms="any", install_requires=['termcolor', 'plotille'], packages=['tsjPython'] )
|
打包自己的项目
执行下述两条命令
1 2 3
| python setup.py build
python setup.py sdist
|
上传到PyPi服务器
在上传前,要建一个文件,$HOME/.pypirc
,$HOME
目录在linux或者mac系统下就是~/目录。在这里建一个 .pypirc
文件。里边的内容如下:
1 2 3 4 5 6
| [distutils] index-servers = pypi [pypi] username:你的PyPi用户名 password:你的PyPi密码
|
或者使用token.
注册好之后,生成一个 token:https://pypi.org/manage/account/#api-tokens。由于我们是要上传新项目,所以不要限制 scope 到特定的项目。
1 2 3 4
| [pypi] username = __token__ password = <换成你刚刚复制下来的 token, 包括 `pypi-` 前缀>
|
提前安装 py -m pip install --upgrade twine
执行此命令: twine upload dist/XXXXX-0.1.0.tar.gz
上传你刚刚打包好的压缩包
安装使用
使用 pip install XXX
就可以轻松使用
开发测试包
如果为了测试而上传代码,会占用版号。
可以通过先安装在本地来实现
1 2
| pip install packageName pip uninstall packageName
|
使用 setup.py 安装的包会被复制到当前环境的 site-packages 目录下,这意味着,一旦我们修改了包的源代码,就需要重新安装它。
setuptools 提供了一个额外的 develop
命令,其完整格式为Python setup.py develop
,该命令允许我们在开发模式下安装包,它会在部署目录(site-packages)时创建一个指向项目源代码的特殊链接,而不是将整个包复制过去,从而实现在编辑包的源代码之后无需再重新安装,并且它在 sys.path
中可用,就像正常安装一样。
pip 也支持用这种模式来安装包,这个安装选项叫作可编辑模式,可以使用 install 命令的 -e
参数来启用,代码格式如下:pip install -e 包路径
参考文献
[^1]: cnblogs python发布自己的pip项目