如何使用图书馆

问题描述:

我有我的包类似这样的结构内的碰撞命名空间:如何使用图书馆

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

Python是不是正在寻找top.io

相反,Python是看在当前目录。当前目录中的位置寻找一个进口sys.path列表中的第一个位置。文件io.py位于您的本地目录中。

从不运行Python解释里面包裹的(所以一定要确保当前的工作目录不在top),否则绝不名具有相同的名称作为标准库的本地模块。

+0

但是,当他的图书馆被用作这样的,他并没有在他的'top'目录中运行解释器将@gonvaled行吗? – 2013-03-13 19:06:44

+0

@MartinStone:是啊,没有内部运行'top'意味着他会好起来的。扩大。 – 2013-03-13 19:10:25