【问题标题】:Python Egg failing to load sub-modules in my projectPython Egg 无法在我的项目中加载子模块
【发布时间】:2017-09-13 17:40:22
【问题描述】:

我正在尝试使用水泥 (builtoncement) 库为我的 python 项目构建创建一个 egg 包

我的项目结构是这样的

connector
    README.md
    requirements.txt
    setup.py
    __main.py__
    __init.py__
    lib
        __init__.py
        handlers
               __init__.py
                logging
                       __init__.py
                        LogStashHandler.py

__main.py__的内容是

import sys
import os
from cement.core.foundation import CementApp
from lib.handlers.logging.LogStashHandler import LogStashHandler
……


class ConnectorApp(CementApp):


def main():
    log = None
    with ConnectorApp() as app:
        log = app.log



if __name__ == '__main__':
    main()

setup.py的内容是

#!/usr/bin/env python

import uuid
from setuptools import setup
import os
from pip.req import parse_requirements

def read(fname):
    return open(os.path.join(os.path.dirname(__file__), fname)).read()

BASE_DIR = os.path.dirname(os.path.realpath(__file__))
reqs_file = os.path.join(BASE_DIR, 'requirements.txt')
install_reqs = parse_requirements(reqs_file, session=uuid.uuid1())

setup(
    name="connectors",
    version="0.1",
    author="Pradeep Mishra",
    install_requires=["argparse", "requests", "pyyaml", "datetime", "cement"],
    packages=['lib'],
    long_description=read('README.md'),
    data_files=[ ('', ['__main__.py', ])],
    classifiers=[     
        "Programming Language :: Python :: 2.7"
    ],
)

我正在使用以下命令安装程序

python setup.py build
python setup.py sdist
python setup.py bdist_egg

当我尝试进入 dist 文件夹运行程序时,出现以下错误:

(venv) Pradeeps-MacBook-Pro:dist pradeepmishra$ python connectors-0.1-py2.7.egg 
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "connectors-0.1-py2.7.egg/__main__.py", line 4, in <module>
ImportError: No module named handlers.logging.LogStashHandler

请帮忙。如何告诉 egg builder 定位 lib 模块中的模块和子模块

【问题讨论】:

    标签: python package setup.py egg


    【解决方案1】:

    我自己找到的。 我没有在包中指定顶级包,而是传递了函数 find_packages() ,它就像魅力一样工作。

    我的设置函数现在看起来像这样 #!/usr/bin/env python

    import uuid
    from setuptools import setup, find_packages
    import os
    from pip.req import parse_requirements
    
    
    def read(fname):
        return open(os.path.join(os.path.dirname(__file__), fname)).read()
    
    BASE_DIR = os.path.dirname(os.path.realpath(__file__))
    reqs_file = os.path.join(BASE_DIR, 'requirements.txt')
    install_reqs = parse_requirements(reqs_file, session=uuid.uuid1())
    
    setup(
    name="connectors",
    version="0.1",
    author="Pradeep Mishra",
    install_requires=["argparse", "requests", "pyyaml", "datetime", "cement"],
    packages=find_packages(),
    long_description=read('README.md'),
    data_files=[ ('', ['__main__.py', ])],
    classifiers=[     
        "Programming Language :: Python :: 2.7"
    ],
    

    )

    【讨论】:

      猜你喜欢
      • 2020-09-09
      • 2018-01-27
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-17
      • 2014-06-13
      • 2011-05-20
      相关资源
      最近更新 更多