Я посмотрел на SO, и ответы, которые я нашел на мою проблему, еще не позволили мне ее решить.
Я хочу использовать изолированные среды virtualenv, но по той или иной причине virtualenv продолжает загружать пакеты глобальных сайтов, когда в оболочке django ...
Я пытался очистить переменные PATH, пока не остались только c: \ Python26 \ Scripts и c: \ Python26. Затем я создаю свою среду.
virtualenv --distribute --no-site-packages myproject
Затем я активирую virtualenv. Теперь PATH (нерелевантные переменные исключены):
PATH=E:\Development\django_projects\myproject\Scripts;C:\Panda3D-1.7.0\python;C:\Panda3D-1.7.0\bin;c:\python26\Scripts;
PYTHONPATH = C: \ Panda3D-1.7.0 \
Пока все хорошо. Я запускаю python ...
>>> import django
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named django
Давайте просто попробуем модуль, который, я уверен, находится в моем каталоге c: \ python site-packages.
>>> import BeautifulSoup
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named BeautifulSoup
Ура! Никаких глобальных пакетов сайта! Тогда переходим к следующему. В командной строке я набираю:
django-admin.py
И работает! Но подождите ... Я еще не установил Django. Как это возможно?
После этого все становится еще более странным ... Сначала я добавляю их в сценарий virtualenv activate.bat, чтобы Django мог найти мои настройки.
set PYTHONPATH=E:\Development\django_projects\myproject\
set DJANGO_SETTINGS_MODULE=settings.development
Теперь я запускаю оболочку django-admin.py и
In [1]: import BeautifulSoup
In [2]: BeautifulSoup.__file__
Out[2]: 'C:\\Python26\\lib\\site-packages\\BeautifulSoup.pyc'
Как такое вообще возможно?
Вспышка озарения
Печатая это, я внезапно понял. . py - это расширение файла, связанное с моим исполняемым файлом c: \ python26 \ python.exe вместо файла virtualenv!
python manage.py
Traceback (most recent call last):
File "manage.py", line 2, in <module>
from django.core.management import execute_manager
ImportError: No module named django.core.management
Хех. Кто-нибудь знает, как связать расширение файла .py с моим исполняемым файлом python virtualenv вместо исполняемого файла python, определенного системой?