Click CLI脚本运行正常,打包后因路径错误失效的问题求助
解决pip安装后CLI无法找到lists目录的问题
修正相对路径的使用逻辑
本地开发时的../lists/fuzz/path_fuzz相对路径,在pip安装后会失效——因为脚本的执行路径和资源文件的实际安装位置不再是开发环境中的相对关系。改用Python官方推荐的包内资源定位方式:- 对于Python 3.9+,用
importlib.resources:from importlib.resources import files # 假设lists目录在kitsec包下,路径为kitsec/lists/fuzz/path_fuzz fuzz_list_dir = files("kitsec.lists.fuzz.path_fuzz") # 若要读取list.txt文件 list_file = fuzz_list_dir.joinpath("list.txt") - 兼容旧版本Python可使用
pkg_resources:import pkg_resources list_file_path = pkg_resources.resource_filename("kitsec", "lists/fuzz/path_fuzz/list.txt")
- 对于Python 3.9+,用
确保资源文件被打包进安装包
在项目的打包配置文件中声明需要包含的资源目录,避免安装时遗漏:- 用
setup.py的话,添加package_data配置:from setuptools import setup, find_packages setup( name="kitsec", # 其他配置项... packages=find_packages(), package_data={ "kitsec": ["lists/**/*"], }, include_package_data=True, ) - 用
pyproject.toml(推荐)的话,添加:[tool.setuptools.package-data] "kitsec" = ["lists/**/*"]
- 用
排查验证
安装后可以到Python的site-packages/kitsec目录下检查,确认lists文件夹是否存在;也可以在代码中打印资源文件的实际路径,确认定位是否正确:print(list_file) # 或print(list_file_path)
内容的提问来源于stack exchange,提问作者anfa
相关产品推荐
相关产品推荐

