Почему мой пакет python не обнаруживает класс для модульного тестирования?

#python #python-2.7 #setuptools #python-unittest #python-packaging

#python #python-2.7 #setuptools #python-unittest #python-packaging

Вопрос:

Может быть, это неубедительный вопрос для многих из вас, умных людей, но я борюсь с простым созданием пакета 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
  

The 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)
  

The 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 в чем может быть причина?

Решение

На случай, если кто-то столкнется с той же проблемой, моя была исправлена, не используя дефисы в качестве имени пакета. Просто и сработало!

Комментарии:

1. Какую строку импорта вы используете? Например from address_book.address_book import person . Также избегайте использования дефисов в именах ваших пакетов. Это может привести к неожиданному поведению.

2. @Hevlastka да, он работал без дефисов. Спасибо

Ответ №1:

Похоже, у вас есть address-book и address_book.egg-info . Я думаю, что так и должно быть address-book.egg-info .