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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM