PyInstaller,相对导入和入口点

时间:2016-09-20 17:04:12

标签: python pyinstaller

我正在尝试使用PyInstaller为Linux系统打包命令行工具。以下是repo文件系统布局:

repo_dir/
    ReadMe.md
    setup.py
    meerkat/
        meerkat.py
        api.py
        config.py
        errors.py
        __init__.py

主要入口点为meerkat/meerkat.py,如下所示:

import click
import requests

from . import VERSION
from . import api
from . import config
from . import errors
from . import log

[... logic ...]

if __name__ == '__main__':
    cli(obj={})

当我通过以下方式构建可执行文件时:

cd repo_dir
pyinstaller -F -p $VIRTUAL_ENV/lib/python2.7/site-packages meerkat/meerkat.py

...然后运行生成的可执行文件,我收到此错误:

File "meerkat/meerkat.py", line 4, in <module>
    from . import VERSION
ValueError: Attempted relative import in non-package

我了解问题的一般原因,因为在运行python meerkat/meerkat.py version而不是python -m meerkat.meerkat version时会出现同样的错误。

PEX allows you to specify the entry point在构建时通过-m meerkat.meerkat:cli参数,但我不知道如何让PyInstaller做类似的事情。有人对我如何解决这个问题有任何建议吗?

0 个答案:

没有答案