如何创建无需公开发布、支持本地import调用的Python Library?
本地Python代码复用方案
你不需要把库公开发布到PyPI,根据使用场景有两类成熟方案可选,优先推荐无额外成本的轻量方案:
方案1:无需打包建库,5分钟搞定复用
这个方案完全不需要走Python库打包、安装流程,适合快速解决跨脚本复制函数的问题:
- 先在本地服务器建一个固定的公共代码目录,比如
/data/py_common/,把之前散落在各个脚本里重复使用的函数,按功能分类整理到这个目录下的.py文件里,比如通用工具放utils.py、数据库操作放db_helper.py。 - 把这个公共目录加到Python的模块搜索路径里,两种方式可选:
- 临时使用:跑脚本前在终端执行
export PYTHONPATH="/data/py_common:$PYTHONPATH",当前终端下所有Python脚本都可以直接用import 模块名的方式导入公共函数,比如from utils import calc_md5。 - 永久生效:把上面的export命令写到当前用户的
~/.bashrc(bash环境)或~/.zshrc(zsh环境),如果要给服务器所有用户用就写到/etc/profile,执行source对应配置文件后立即生效,后续所有脚本直接导包即可,不用做其他配置。
- 临时使用:跑脚本前在终端执行
- 优势:没有额外维护成本,公共函数改完所有引用的脚本自动生效,完全本地存储不需要公网访问,权限可控。
个人或者小团队内部使用优先选这个方案,足够解决重复复制代码的问题,没必要为了小需求上复杂的打包流程。
方案2:构建本地私有Python库
如果后续需要做版本管理、依赖声明,或者要在多台服务器/多个虚拟环境分发代码,可以做成标准Python库,同样不需要公开发布:
- 按标准Python包结构组织代码,最简结构参考:
my_private_lib/ ├── setup.py ├── common/ │ ├── __init__.py │ ├── string_utils.py │ └── file_utils.py
- 写最简化的
setup.py配置即可,不需要填公网仓库相关信息:
from setuptools import setup, find_packages setup( name="my_common_lib", version="0.1.0", packages=find_packages(), install_requires=[] # 这里填你的库依赖的其他第三方包,比如requests、pandas之类的 )
- 安装使用:进入
my_private_lib根目录,执行pip install -e .就可以在当前Python环境全局导入这个库的模块,-e是可编辑模式,修改库内代码不需要重新安装,即时生效。如果要在其他环境用,把整个库目录拷过去执行同样的安装命令就行。 - 如果团队人数多、包版本迭代频繁,可以在内网搭一个本地PyPI私服,把打包好的私有库上传到私服,所有服务器的pip源配置成内网私服地址,直接用pip安装即可,全程不经过公网。
内容的提问来源于stack exchange,提问作者owen ackner
相关产品推荐
相关产品推荐

