代码之家  ›  专栏  ›  技术社区  ›  joydeep bhattacharjee

如何在python轮中打包perl文件

  •  1
  • joydeep bhattacharjee  · 技术社区  · 6 年前

    我们为一个包含python和perl脚本集合的包创建了一个pip-wheel文件。因为python打包只会将python文件添加到wheel文件中,所以打包perl文件的最佳方式也是什么。

    这是我的项目结构

    .
    |____myproject
    | |____logging.ini
    | |____utils.py
    | |____myperlscript.pl
    | |____config.py
    | |____version.py
    | |____scripta.py
    | |____scriptb.py
    | |____scriptc.py
    | |______init__.py
    |____test
    | |____test_scripts.py
    |______init__.py
    |____MANIFEST.in
    |____README.md
    |____setup.py
    |____.gitignore
    |____Jenkinsfile
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   metatoaster    6 年前

    如果您当前正在使用 setuptools setup.py python setup.py bdist_wheel 作为生成 .whl 文件,将以下行添加到 MANIFEST.in 已存在于项目根目录中的文件。

    recursive-include myproject *
    

    自然,替换 myproject .pl 脚本(或任何其他文件)。

    作为演示,如果 安装程序.py 大致是这样写的:

    from setuptools import setup
    from setuptools import find_packages
    
    setup(
        name='myproject',
        version='0.0.0',
        description='demo package',
        long_description=open('README.md').read(),
        classifiers=[
            'Programming Language :: Python',
        ],
        packages=find_packages(),
        include_package_data=True,
        zip_safe=False,
    )
    

    python setup.py bdist_轮 将显示如下输出:

    ...
    adding 'myproject/__init__.py'
    adding 'myproject/config.py'
    adding 'myproject/logging.ini'
    adding 'myproject/myperlscript.pl'
    adding 'myproject/scripta.py'
    adding 'myproject/utils.py'
    adding 'myproject/version.py'
    adding 'test/__init__.py'
    ...
    

    文件打包在 .whl公司 :

    $ unzip -t dist/myproject-0.0.0-py3-none-any.whl 
    Archive:  dist/myproject-0.0.0-py3-none-any.whl
        testing: myproject/__init__.py    OK
        testing: myproject/config.py      OK
        testing: myproject/logging.ini    OK
        testing: myproject/myperlscript.pl   OK
    ...
    

    安装结果 .whl公司

    $ pip install -U myproject-0.0.0-py3-none-any.whl 
    Processing myproject-0.0.0-py3-none-any.whl
    Installing collected packages: myproject
    Successfully installed myproject-0.0.0
    $ ls env/lib/python3.6/site-packages/myproject/
    config.py    logging.ini      __pycache__  utils.py
    __init__.py  myperlscript.pl  scripta.py   version.py
    

    还要注意,如果 清单.in 方法不需要,包括 package_data={'': ['*']}, 论证 setup call还应使其与最新版本的 设置工具 .

    进一步增编: 包实际上有一个 MANIFEST.in 其中包括此特定语法,但仅限于要包含的文件的特定文件扩展名。这显然是一个受支持的选项,尽管有些指南/文档可能有其他建议。事实上,这是一个功能 provided by the core distutils module