You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pip3安装Python包时未部署conf配置文件问题求助

解决Python包安装后配置文件缺失的问题

我来帮你搞定这个配置文件找不到的问题!核心原因是你的项目结构没有遵循Python包的规范,导致include_package_data=True没能正确识别并安装conf目录下的文件。下面是具体的解决方案:

一、调整项目结构

首先把你的代码整理成标准的Python包结构,这是让配置文件被正确打包安装的关键:

droidlysis-3.0.13/
├── setup.py
├── README.md
├── setup.cfg
└── droidlysis/          # 新建的包目录
    ├── __init__.py      # 空文件即可,标记这是一个Python包
    ├── droidlysis3.py
    ├── droidconfig.py
    ├── droidcountry.py
    ├── ...(所有你的.py脚本文件)
    └── conf/            # 把原来的conf目录移到这里
        ├── manifest.conf
        ├── kit.conf
        └── ...(其他配置文件)

二、修改MANIFEST.in

更新MANIFEST.in的路径,匹配新的包结构:

include droidlysis/conf/*.conf

三、更新setup.py配置

修改setup.py,调整包相关的参数,确保配置文件被正确识别:

#!/usr/bin/env python3
from setuptools import setup

with open("README.md", "r") as fh:
    long_description = fh.read()

setup(
    name='droidlysis',
    description='DroidLysis: pre-analysis script for suspicious Android samples',
    long_description=long_description,
    long_description_content_type="text/markdown",
    author='me',
    author_email='me@gmail.com',
    url='https://github.com/me',
    license='MIT',
    keywords="android malware reverse",
    python_requires='>=3.0.*',
    version='3.0.13',
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Development Status :: 3 - Alpha",
        "Operating System :: Unix",
        "Topic :: Software Development :: Disassemblers",
    ],
    include_package_data=True,
    # 新增:指定你的Python包
    packages=['droidlysis'],
    # 可选:显式指定包数据,和include_package_data配合更稳妥
    package_data={
        'droidlysis': ['conf/*.conf']
    },
    # 替换原来的scripts,用entry_points定义命令行入口(更规范)
    entry_points={
        'console_scripts': [
            'droidlysis3 = droidlysis.droidlysis3:main',
            # 其他脚本同理,比如如果droidconfig.py有main函数就这么加
            # 'droidconfig = droidlysis.droidconfig:main'
        ]
    },
    install_requires=[
        'configparser',
        'python-magic',
        'SQLAlchemy',
        'rarfile'
    ],
    # 如果暂时不想改entry_points,可以保留scripts,但路径要改成包内的
    # scripts = [
    #     'droidlysis/droidlysis3.py',
    #     ...(其他脚本的新路径)
    # ]
)

四、关键原因解释

你之前的问题出在:

  • include_package_data=True只对Python包(即包含__init__.py的目录,且被packages参数指定)生效,而你原来的项目没有包结构,conf目录不属于任何包,所以安装时不会被复制到虚拟环境的site-packages中。
  • 原来的scripts参数只是把单独的脚本复制到虚拟环境的bin目录,但不会处理脚本以外的目录。

五、验证步骤

  1. 先本地安装测试:

    pip install .
    
  2. 然后在虚拟环境中查找配置文件:

    find ~/softs/myvirtualenvs/testdroidlysis -name "*.conf"
    

    这时应该能在site-packages/droidlysis/conf/下找到你的配置文件了。

  3. 重新打包上传到Test PyPI,再用pip安装验证即可。

内容的提问来源于stack exchange,提问作者user1381

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 18:57:33