我正在尝试使用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做类似的事情。有人对我如何解决这个问题有任何建议吗?