目的
假设您具有以下配置的软件包。
1 2 3 4 5 6 7 8 9 10 | $ tree . ├── config │ └── myrc ├── mypackage │ ├── __init__.py │ ├── lib │ │ └── libmypackage.so │ └── mymodule.py └── setup.py |
当我使用
方法
使用
1 2 3 4 5 6 7 8 9 10 11 | from setuptools import setup, find_packages setup( name='mypackage', version='0.0.1', packages=find_packages(), data_files=[ ('lib64', ['mypackage/lib/libmypackage.so']), ('etc', ['config/myrc']) ] ) |
将"分发目标目录的相对路径"和"要分发的数据文件的setup.py的相对路径"的元组数组传递给
实践
准备以下Dockerfile,以便您可以轻松地在容器中准备新的环境。
1 2 3 4 5 6 7 8 9 10 | $ FROM centos:centos7 RUN yum -y update && yum install -y \ python-devel \ python-setuptools \ && easy_install pip \ && pip install wheel \ && pip install --upgrade \ pip \ setuptools |
构建图像。
1 | $ docker build -t mypackage . |
如果启动
容器并运行
1 2 3 4 5 | $ docker run --rm -it -v ${PWD}:${PWD} -w ${PWD} mypackage /bin/bash # python setup.py install_data running install_data copying mypackage/lib/libmypackage.so -> /usr/lib64 copying config/myrc -> /usr/etc |
即使使用
1 2 3 4 5 6 7 | $ docker run --rm -it -v ${PWD}:${PWD} -w ${PWD} mypackage /bin/bash # python setup.py bdist_wheel # pip install dist/mypackage-0.0.1-py2-none-any.whl # find /usr -name 'libmypackage.so' /usr/lib64/libmypackage.so # find /usr -name 'myrc' /usr/etc/myrc |
另一方面,
1 2 3 4 5 | $ docker run --rm -it -v ${PWD}:${PWD} -w ${PWD} mypackage /bin/bash # python setup.py bdist_egg # easy_install dist/mypackage-0.0.1-py2.7.egg # find /usr -name 'libmypackage.so' # find /usr -name 'myrc' |
参考
https://docs.python.org/3.6/distutils/setupscript.html#installing-additional-files