• Python setup.py install 包含指定静态文件(打包时包含静态文件)


    Outline

    需要对下面的Python项目进行打包,编写好了 setup.py 后,直接Python setup.py install;

    因为Python setup.py install 默认只保留 .py 的文件,所以 static 不在安装路径内,但此处需要它。

    ├── ./mdlib
    │   ├── ./mdlib/data_api.py
    │   ├── ./mdlib/meta_info.py
    │   ├── ./mdlib/shm_cache.py
    │   └── ./mdlib/shm_data.py
    ├── ./README.md
    ├── ./requirements.txt
    ├── ./scripts
    │   ├── ./scripts/clickhouse_import.py
    │   ├── ./scripts/__init__.py
    │   ├── ./scripts/README.md
    │   └── ./scripts/update_bin.log
    ├── ./setup.cfg
    ├── ./setup.py
    ├── ./static
    │   ├── ./static/paths2.csv
    │   └── ./static/paths.csv
    ├── ./tests
    │   ├── ./tests/README.md
    │   ├── ./tests/test_get_feature.py
    │   └── ./tests/test_path_finder.py
    └── ./utils
        ├── ./utils/__init__.py
        └── ./utils/slice_utils.py

    网上一大堆说修改 setup.py 中 package_data、include_package_data 就可以完成我的需求,跟着修改了一通,不起作用,安装后依然不见 static 的踪影;

    还有说 添加个 MANIFEST.in 文件,在里面写上保存规则即可,跟着设置了,还是不起作用。

    解决

    思来想去就是想不通问题出在哪里;

    后来发现只要目录下包含 __init__.py 的目录,在执行 Python setup.py install 后都可以成功加入安装路径内;

    在Python项目中,如果一个目录包含 __init__.py 文件,那么它就是一个 package了;

    然后便再static目录下加入 __init__.py ,再执行 Python setup.py install,惊喜的发现安装路径内出现 static 目录了;

    至此问题得到解决。

    (注:static 目录下加入 __init__.py,且项目根目录下加入 MANIFEST.in 文件)

    setup.py

    from setuptools import find_packages, setup
    
    def read_file(file):
        with open(file, "rt") as f:
            return f.read()
    
    setup(
        name='mdlib',  # 项目名
        description='python投研数据接口',
        keywords=(
            "mdlib"
        ),
        packages=find_packages(exclude=[]),
        author='TongDao Technology',
        author_email='TongDao@forex.com.cn',
        license='Apache License v2',
        url='',
        install_requires=[i for i in read_file("requirements.txt").strip().splitlines() if i != ''],
        zip_safe=False,
    )

    MANIFEST.in

    该文件放在项目根目录下(和setup.py同级),然后执行 Python setup.py install 即可

    # 我只用到这一个文件,就指定一个了,其余没用
    include static/paths.csv
  • 相关阅读:
    BZOJ4407
    BZOJ 4804
    BZOJ 2820
    莫比乌斯反演入门
    BZOJ3261
    BZOJ 4327
    BZOJ1212
    AC自动机 板子
    派生类的访问控制-“三看”原则-派生类类成员访问级别设置的原则
    为什么不要重载 && 和 || 操作符!!!
  • 原文地址:https://www.cnblogs.com/bigtreei/p/14520287.html
Copyright © 2020-2023  润新知