структуры каталогов проекта My Django Django проекта выглядит следующим образом:ошибка импорта с
/sparestub
//registration
//messages
//tickets
//requests
//venv
Есть куча других папок, но вы получите идею. Один из модулей, установленных в моей виртуальной среде, - это запросы. Обратите внимание, что в моем приложении также есть модуль с запросами. Модуль запросов используется другим модулем, установленным в моей виртуальной среде, называемой djrill. Всякий раз, когда я пытаюсь запустить свой сервер, я получаю следующее сообщение об ошибке:
File "/Users/me/Documents/coding/sparestub/venv/lib/python3.4/site-packages/djrill/__init__.py", line 5, in <module>
from djrill.exceptions import MandrillAPIError, NotSupportedByMandrillError
File "/Users/me/Documents/coding/sparestub/venv/lib/python3.4/site-packages/djrill/exceptions.py", line 1, in <module>
from requests import HTTPError
ImportError: cannot import name 'HTTPError'
То, что я подозреваю, что происходит, что djrill пытается импортировать мой модуль запросов вместо модуля запросов в моей виртуальной environemnt и терпит неудачу потому, что он не имеет класса HTTPError.
Мое ближайшее предположение заключалось в том, что мой сайт django сделал свой путь в PYTHONPATH. Глядя на sys.path, я не вижу ничего инкриминирующего. Мое приложение называется sparestub.
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 00:54:21)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/Users/me/Documents/coding/sparestub/venv/lib/python34.zip',
'/Users/me/Documents/coding/sparestub/venv/lib/python3.4',
'/Users/me/Documents/coding/sparestub/venv/lib/python3.4/plat-darwin',
'/Users/me/Documents/coding/sparestub/venv/lib/python3.4/lib-dynload',
'/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4',
'/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin',
'/Users/me/Documents/coding/sparestub/venv/lib/python3.4/site-packages',
'/Users/me/Documents/coding/sparestub/venv/lib/python3.4/site-packages/newrelic-2.40.0.34']
Обратите внимание, что вторая-последняя строка предназначена для сайтов-пакетов. Я бы ожидал, что оператор запросов импорта найдет здесь модуль запросов вместо моего модуля запросов. Если у вас есть какие-либо объяснения относительно того, почему это происходит, мне бы очень хотелось помочь.
Спасибо!
Я понимаю, что я мог бы использовать свои приложения, но зачем это нужно? Не sys.path определяет разрешение модуля? Если это так, почему система ищет мой модуль запросов до того, как он находится в виртуальной среде? – Nick
Насколько я знаю, рабочая папка всегда смотрится сначала, то есть «в sys.path». –
В итоге я просто изменил название приложения. Идея переделать весь мой импорт звучит как кошмар – Nick