Из того, что я узнал из моих исследований здесь и в других местах, кажется, что если a) модуль находится в пути поиска Python или b) содержится в пакете, который находится в путь поиска Python, чтобы команда импорта могла находить и импортировать модуль.Ошибка модуля модуля Python (http.cookies)
В интерактивном скрипте ниже обратите внимание, что оба этих условия выполнены. папка http содержит файл __init__.py
, что делает его пакетом, и эта папка содержит модуль с именем cookie.py. Тем не менее, команда import http.cookies не работает, и трассировка выглядит так: Python ищет этот модуль в папках django, который, как я знаю, не будет работать, поскольку в папке пакета django http отсутствует файл cookie.py. Я также попытался манипулировать поисковым путем, отредактировав свой PYTHONPATH, чтобы гарантировать, что папка http-пакетов стандартной библиотеки ранее в пути поиска, но, как вы можете видеть ниже, импорт все еще не работает.
Что вызывает этот отказ?
Python 3.3.1 (v3.3.1:d9893d13c628, Apr 6 2013, 20:25:12) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import sys
>>> for item in sys.path: print(item)
C:\Python33\Lib\idlelib
C:\Python33\lib\site-packages\setuptools-1.1.7-py3.3.egg
c:\Python33\Lib\http
C:\Python33\Lib\site-packages
C:\Python33\Lib\site-packages\django
C:\Python33\Lib\site-packages\django\bin
C:\Windows\system32\python33.zip
C:\Python33\DLLs
C:\Python33\lib
C:\Python33
C:\Python33\lib\site-packages\win32
C:\Python33\lib\site-packages\win32\lib
C:\Python33\lib\site-packages\Pythonwin
>>> import os
>>> os.path.isfile('C:/Python33/Lib/http/__init__.py')
True
>>> os.path.isfile('C:/Python33/Lib/http/cookies.py')
True
>>> import http.cookies
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
import http.cookies
File "C:\Python33\Lib\site-packages\django\http\__init__.py", line 1, in <module>
from django.http.cookie import SimpleCookie, parse_cookie
File "C:\Python33\Lib\site-packages\django\http\__init__.py", line 1, in <module>
from django.http.cookie import SimpleCookie, parse_cookie
File "C:\Python33\Lib\site-packages\django\http\cookie.py", line 5, in <module>
from django.utils.six.moves import http_cookies
File "C:\Python33\Lib\site-packages\django\utils\six.py", line 86, in __get__
result = self._resolve()
File "C:\Python33\Lib\site-packages\django\utils\six.py", line 105, in _resolve
return _import_module(self.mod)
File "C:\Python33\Lib\site-packages\django\utils\six.py", line 76, in _import_module
__import__(name)
ImportError: No module named 'http.cookies'
>>>
Отлично! Тот факт, что _parent directory_ пакетов должен находиться в пути поиска, ** не ** каталог пакетов каким-то образом полностью убежал от меня. Спасибо @Martijn !! –