python setuptools入口点脚本无法找到模块

时间:2016-01-04 11:47:06

标签: python setuptools entry-point

我觉得我在这里错过了一些观点,谷歌搜索并没有让我走得太远。

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

文件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'
        ]
    },
)

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

  • test_entry_point
    • TEP
      • __初始化__。PY
      • __主__。PY
      • a.py
    • setup.py

在当地一切运作良好。但安装后:

sudo -H python setup.py install

并使用tep或使用python -m tep从其他shell调用,我收到以下错误:

ImportError: No module named 'a'

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

感谢。

1 个答案:

答案 0 :(得分:1)

这是因为您没有指定a模块的绝对路径。请注意,a位于包tep中。所以你需要在__main__.py

中导入这样的内容
from tep.a import a