У меня есть структура, подобная этой для моих пакетов:Как использовать сталкивающееся пространство имен в библиотеке
top/
├── __init__.py
└── io
└── __init__.py
Теперь у меня есть эта проблема с импортом стандартной библиотекой urllib3.filepost
:
[email protected] ~/top » python
Python 2.7.2 (default, Jan 11 2013, 17:58:01)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib3.filepost
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/gonvaled/.virtualenvs/python2.7.2-wavilon1/lib/python2.7/site-packages/urllib3/__init__.py", line 16, in <module>
from .connectionpool import (
File "/home/gonvaled/.virtualenvs/python2.7.2-wavilon1/lib/python2.7/site-packages/urllib3/connectionpool.py", line 42, in <module>
from .request import RequestMethods
File "/home/gonvaled/.virtualenvs/python2.7.2-wavilon1/lib/python2.7/site-packages/urllib3/request.py", line 12, in <module>
from .filepost import encode_multipart_formdata
File "/home/gonvaled/.virtualenvs/python2.7.2-wavilon1/lib/python2.7/site-packages/urllib3/filepost.py", line 11, in <module>
from io import BytesIO
ImportError: cannot import name BytesIO
Почему стандартная библиотека смотрит в top.io
? Как я могу избежать этого? Я бы очень хотел использовать top.io
для моего имени пакета.
Но будет ли @gonvaled быть в порядке, когда его библиотека будет использоваться как таковая, и у него нет интерпретатора, работающего в его каталоге 'top'? –
@MartinStone: Да, не работает внутри 'top' означает, что с ним все будет в порядке. Expanded. –