python setuptools 入口点脚本找不到模块

python setuptools entry point script can't find module

我觉得我在这里遗漏了一些要点,谷歌搜索并没有让我走得太远。

我正在使用 setuptools 作为命令行脚本。一切顺利,但安装后我自己的文件不是 "seen" 由入口点的自动生成的脚本。想象一下以下情况:

文件 a.py 包含:

a = 12

文件 __main__.py 包含:

from a import a

def main():
    print(a)

if __name__ == '__main__':
    main()

文件 __init__.py 为空。文件 setup.py 包含:

from setuptools import setup, find_packages

setup(
    name='tep',
    packages=find_packages(),
    version='0.0.1',
    entry_points={
        'console_scripts': [
            'tep = tep.__main__:main'
        ]
    },
)

所有都正确位于目录结构中:

本地一切正常。但是安装后:

sudo -H python setup.py install

并通过使用 tep 或使用 python -m tep 从不同的 shell 调用,我收到以下错误:

ImportError: No module named 'a'

因此文件 a.py 安装后在范围内不可见。有什么想法吗?

谢谢。

发生这种情况是因为您没有指定 a 模块的绝对路径。请记住,a 在包 tep 中。所以你需要在 __main__.py:

中这样导入
from tep.a import a