2

私のパッケージには、これに似た構造があります。

top/
├── __init__.py
└── io
    └── __init__.py

今、標準ライブラリのインポートにこの問題がありますurllib3.filepost:

gonvaled@pegasus ~/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パッケージ名に使用したいと思います。

4

1 に答える 1

2

Pythonはを調べていませんtop.io

代わりに、Pythonは現在のディレクトリを探しています。現在のディレクトリはsys.path、インポートを探す場所のリストの最初の場所です。ファイルio.pyはローカルディレクトリにあります。

パッケージ内でPythonインタープリターを実行しないでください(したがって、現在の作業ディレクトリがにないことを確認してくださいtop)。そうでない場合は、標準ライブラリと同じ名前のローカルモジュールに名前を付けないでください。

于 2013-03-13T19:03:18.420 に答える