【问题标题】:Why is my python package not discovering the class for unit testing?为什么我的 python 包没有发现用于单元测试的类?
【发布时间】:2017-03-02 21:26:15
【问题描述】:

对于许多聪明人来说可能是个蹩脚的问题,但我正在努力创建一个简单的 python 包。 我的包目录结构是:

address-book/
├── __init__.py
├── dist
│   └── book-0.1.tar.gz
├── address-book
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── person.py
│   └── person.pyc
├── address_book.egg-info
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   ├── dependency_links.txt
│   ├── not-zip-safe
│   └── top_level.txt
├── setup.py
└── tests
    ├── __init__.py
    ├── __init__.pyc
    ├── person_test.py
    └── person_test.pyc

setup.py如下:

from setuptools import setup, find_packages

setup(name='address-book',
      version='0.1',
      description='The funniest joke in the world',
      url='http://github.com/storborg/funniest',
      author='Address Book',
      author_email='flyingcircus@example.com',
      license='MIT',
      packages=find_packages('.'),
      test_suite="tests",
      zip_safe=False)

SOURCES.txt:

setup.py
address-book/__init__.py
address-book/person.py
address_book.egg-info/PKG-INFO
address_book.egg-info/SOURCES.txt
address_book.egg-info/dependency_links.txt
address_book.egg-info/not-zip-safe
address_book.egg-info/top_level.txt
tests/__init__.py
tests/person_test.py

在 person_test.py 中我无法导入 person.py,可能是什么原因?

解决方案

如果有人遇到同样的问题,我的解决方法是不使用连字符作为包名。简单而有效!

【问题讨论】:

  • 您使用的导入字符串是什么?例如from address_book.address_book import person。还要避免在包名称中使用连字符。这可能会导致意外行为。
  • @Hevlastka 是的,它确实可以在没有连字符的情况下使用。谢谢

标签: python python-2.7 setuptools python-unittest python-packaging


【解决方案1】:

您似乎拥有address-bookaddress_book.egg-info。我觉得应该是address-book.egg-info

【讨论】:

    猜你喜欢
    • 2014-12-04
    • 1970-01-01
    • 2020-09-05
    • 2019-04-09
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 2018-04-26
    相关资源
    最近更新 更多