2015-02-22 2 views
0

Я создаю пакет, который я хочу установить с помощью pip. Название пакета - «pololu-motors» и теперь находится на PyPi в версии 0.1.2, но, похоже, оно не импортируется правильно.Проблемы с выпуском пакета Python

Update:Проблема была решена, проблема была мне не код, однако я обновил package до версии 0.2.1 и сделал его более трудно затирать пространство имен, так что надеюсь, никто другой будет иметь вопрос, который у меня был.

Если я подключился к своей виртуальной среде на базе модуля motors и импортировал пакет с помощью ipython, он отлично работает, но если я попытаюсь импортировать пакет из тестового проекта, у меня есть настройка, он говорит об этом не может записывать ни один из классов, находящихся на motors.

Вот мой motors/__init__.py

from .qik2s9v1 import Qik2s9v1 

Только за пределами модуля двигателей в Зону-пакетов:

In [1]: from motors import Qik2s9v1 

In [2]: 

Там нет ошибок и класс Qik2s9v1 найден правильно, однако, в тесте проект Я получаю это:

In [1]: from motors import Qik2s9v1 
--------------------------------------------------------------------------- 
ImportError        Traceback (most recent call last) 
<ipython-input-1-79017388c348> in <module>() 
----> 1 from motors import Qik2s9v1 

ImportError: cannot import name Qik2s9v1 

Я могу import motors с нет ошибок, но класс Qik2s9v1 не найден.

In [2]: import motors 

In [3]: motors.Qik2s9v1 
--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
<ipython-input-3-fee4c340a836> in <module>() 
----> 1 motors.Qik2s9v1 

AttributeError: 'module' object has no attribute 'Qik2s9v1' 

Любые идеи, что здесь происходит?

+0

Просьба показать все файлы в тестовом проекте: есть ли еще один файл 'motors.py'? Или, возможно, такой файл 'motors.py' находится где-то еще на вашем' PYTHONPATH'? Попробуйте импорт двигателей; распечатать моторы .__ file__' и посмотреть, что это дает. – Evert

+0

Вы были точно верны, у меня есть каталог 'motors' в моем тестовом пакете, который клонировал имя моего пакета. Я должен, вероятно, сделать импортное имя моего пакета чем-то менее двусмысленным, чем «моторы». – cnobile

ответ

0

@Evert верный ответ на этот вопрос. Как оказалось, у меня был каталог с именем motors в том же месте, где я пытался импортировать имя моего пакета motors с ipython. Если бы я сменил каталог на любое другое место в своем тестовом пакете, это сработало бы просто отлично.

Это глупая ошибка, которую я не должен был делать, но урок хорошо изучен.