Я получаю приведенную ниже ошибку при выполнении протоколов Python / smpp / test / test_post_upgrade.py:
Traceback (most recent call last):
File "protocols/smpp/test/test_post_upgrade.py", line 1, in <module>
from protocols.smpp.proto import *
File "/tmp/Wass/protocols/smpp/proto.py", line 1, in <module>
from twisted.internet import defer, reactor
ImportError: No module named internet
Вот мое дерево:
/tmp/Wass$ tree
.
├── __init__.py
└── protocols
├── __init__.py
├── __init__.pyc
└── smpp
├── __init__.py
├── __init__.pyc
├── proto.py
├── proto.pyc
└── test
├── __init__.py
└── test_post_upgrade.py
3 directories, 10 files
Вот содержимое основных файлов:
/tmp/Wass$ cat protocols/smpp/proto.py
from twisted.internet import defer, reactor
/tmp/Wass$ cat protocols/smpp/test/test_post_upgrade.py
from protocols.smpp.proto import *
/tmp/Wass$ cat protocols/smpp/__init__.py
__import__('pkg_resources').declare_namespace(__name__)
Для информации, я могу решить эту проблему одним из следующих действий:
- Очистка
protocols/smpp/__init__.py
, но это полезно для всего проекта, поэтому я могу простоочистите этот файл, мой проект больше не будет запускаться .. - Переименование
protocols/smpp
во что-либо еще, например, protocols/toto
будет работать (с изменением protocols/smpp/test/test_post_upgrade.py
на from protocols.toto.proto import *
Второе решение настолько запутанно, что у меня нет smpp/proto.py
в моей системе, которое может вызвать конфликт ...
Вот более простое представление проблемы:
Wass/
Wass/__init__.py
Wass/protocols/
Wass/protocols/smpp/
Wass/protocols/smpp/__init__.py
Wass/protocols/smpp/test/
Wass/protocols/smpp/test/__init__.py
Wass/protocols/__init__.py
Wass/protocols/smpp/test/test_post_upgrade.py:
> from Wass.protocols.smpp.proto import SMPPClientProtocol
Wass/protocols/smpp/proto.py
> from twisted.internet import defer, reactor
>
> class SMPPClientProtocol:
> pass
Результат исполнения:
$ echo $PYTHONPATH
:/opt/smpp.twisted/:/opt/smpp.pdu/:/tmp/Wass/
python /tmp/Wass/protocols/smpp/test/test_post_upgrade.py
> Returns the same problem above