无需调整目录结构,为mylib编写setup.py实现可编辑pip安装
解决方案:无需修改目录结构,通过setup.py实现需求
完全可以在当前mylib目录下添加setup.py文件,实现可编辑安装、包导入和命令行脚本运行的需求,同时不破坏现有用户的工作流。
1. 添加setup.py文件
在mylib根目录下创建setup.py,内容如下:
from setuptools import setup, find_packages setup( name="mylib", version="0.1.0", packages=find_packages(), scripts=["py_script"], include_package_data=True, )
参数说明:
packages=find_packages():自动识别当前目录下所有包含__init__.py的子包(lib、tools以及mylib本身),确保from mylib.tools import useful_tool这类导入能正常工作。scripts=["py_script"]:将py_script注册为系统/虚拟环境的可执行命令,安装后直接在命令行输入py_script即可运行。include_package_data=True:确保后续如果添加非Python文件(如配置、资源)时能被正确包含(当前场景可选,但建议保留)。
2. 执行可编辑安装
在mylib的父目录下运行以下命令(或进入mylib目录后执行pip install -e .):
pip install -e ./mylib
-e参数表示可编辑安装,修改mylib内的代码会实时生效,无需重新安装。
3. 验证功能
- 包导入验证:新建任意Python文件,写入
from mylib.tools import useful_tool并运行,无报错即说明导入正常。 - 命令行脚本验证:直接在终端输入
py_script,脚本能正常执行即符合要求。
4. 兼容现有用户工作流
现有用户通过手动将mylib父目录添加到PYTHONPATH、将mylib目录添加到PATH的方式使用库,不会被破坏:
- 可编辑安装后,pip会在Python的site-packages目录中添加一个
.pth文件,指向mylib目录,效果和手动添加PYTHONPATH一致,两种方式互不冲突。 - 对于命令行运行
py_script,现有用户通过PATH直接调用mylib内的脚本,和pip安装后生成的可执行链接共存,用户可任选一种方式使用。
内容的提问来源于stack exchange,提问作者LexTron
相关产品推荐
相关产品推荐

