gpt4 book ai didi

Python PEX 加载

转载 作者:太空宇宙 更新时间:2023-11-03 14:18:49 24 4
gpt4 key购买 nike

我一直在努力研究 python pex 实用程序 ( https://pex.readthedocs.org/en/latest/ ),以便将一些应用程序捆绑到 .pex 文件中进行部署。

我的应用不够大,无法使用 Twitter 裤子构建工具,而且我有一些裤子无法满足的构建要求。然而,我确实尝试了使用 python_binary 的裤子工具构建系统,这导致 pex 文件的源加载到 pex 文件根目录中。 pants 中的 BUILD 文件接受 python_binary 的 sources 属性,它可以是构建运行目录中文件的 glob,但是,pants 使用的是 pex 编程 API 而不是命令行实用程序.

问题是当我单独使用 pex 命令行实用程序时,它似乎需要分发(即使用 setup.py 等设置的文件夹)并希望将我的代码安装到 .deps pex 文件中的文件夹,而不是像 pants 那样将 python 文件复制到 pex 文件的根目录中。

是否无法通过命令行 pex 工具复制文件(而不是安装包)?

最佳答案

从 pex 1.0.0 开始,没有直接组合文件和目录的工具,您必须按照您的建议使用 setup.py,或者使用裤子(不再是 Twitter 的 - 独立)。

所以你有 3 条前进的道路(#1 你已经知道,但为其他人拼写出来):

  1. 创建一个 setup.py 并将 pex 工具指向它的目录

    $ tree -h
    .
    ├── [4.0K] lib
    │   ├── [ 0] __init__.py
    │   ├── [ 38] lib.py
    │   └── [ 68] main.py
    └── [ 76] setup.py

    1 directory, 4 files
    $ cat lib/lib.py
    def func():
    return 'func in lib'

    $ cat lib/main.py
    from .lib import func

    if __name__ == '__main__':
    print(func())

    $ cat setup.py
    from setuptools import setup

    setup(
    name='lib',
    packages=['lib']
    )

    $ pex . -e lib.main -o lib.pex
    $ ./lib.pex
    func in lib

    注意:pex 命令行中的 . 是指向 pex 在此目录的 setup.py 中的位

  2. 针对 pex 提出问题以支持一组文件代替要求/setup.py。你可以做到 here .

  3. 针对裤子提出问题,以支持您提出但 Unresolved 要求。你可以做到 here

作为裤子的提交者,我可以说我们正在努力让裤子更容易使用,这样任何项目都不会太小。您应该能够 pip install pantsbuild.pants.backend.python && touch pants.ini 并在仅限 python 的存储库中启动并运行,但我们今天不在那里。

关于Python PEX 加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30654854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com