2010-11-06 1 views
7

Я посмотрел на SO, и ответы, которые я нашел в моей проблеме, еще не разрешили мне решить эту проблему.Virtualenv продолжает загружать глобальные пакеты сайтов в Windows

Я хочу использовать изолированные среды virtualenv, но по той или иной причине, virtualenv держит не загружается глобальные пакеты сайта, когда в оболочке Джанго ...

Я попытался очистить PATH переменных, пока только с: \ 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\

До сих пор, так хорошо. Я запускаю питон ...

>>> import django 
    Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    ImportError: No module named django 

Давайте просто попробовать модуль я уверен, что находится в моем C: \ питона каталога сайтов-пакетов.

>>> import BeautifulSoup 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named BeautifulSoup 

Yay! Нет глобальных пакетов сайтов! Затем на следующий. В командной строке введите:

django-admin.py 

И это работает! Но подождите ... Я еще не установил Django. Как это возможно?

После этого он становится еще более странным ... Я сначала добавляю их в скрипт virtual.bat virtualenv, чтобы 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-файла с исполняемым файлом virtualenv python, а не с системным программным обеспечением python?

+0

* Как связать расширение .py-файла с исполняемым файлом virtualenv на python * См. [Почему virtualenv на Windows не связывает файлы .py/.pyw/.pyo/.pyc с версиями исполняемых файлов на виртуальном языке версии Python?] (Http : //stackoverflow.com/q/4879624/95735) и [Временная ассоциация файлов для сеанса Single cmd.exe] (http://stackoverflow.com/q/5583024/95735) –

ответ

11

Немного лишнего. Бат-хакер может легко исправить это. Мое стандартное дополнение к activate.bat:

REM custom venv settings 
set PYTHONPATH=%\VIRTUAL_ENV%;%\VIRTUAL_ENV%\conf;%\VIRTUAL_ENV%\apps 
set DJANGO_SETTINGS_MODULE=settings 

ftype Python.File=%VIRTUAL_ENV%\Scripts\python.exe %1 %* 

и деактивировать.летучая

REM restore ftype 
ftype Python.File=C:\tools\Python27\python.exe %1 %* 
+0

+1 Большое спасибо, didn ' Раньше я знал о ftype. – alexandrul

+0

Есть ли дополнительные символы в следующей строке: «установить PYTHONPATH =% \ VIRTUAL_ENV%;% \ VIRTUAL_ENV% \ conf;% \ VIRTUAL_ENV% \ apps"? Не следует ли читать: «установить PYTHONPATH =% VIRTUAL_ENV%;% VIRTUAL_ENV% \ conf;% VIRTUAL_ENV% \ apps"? – Nathan

+1

Дополнительно ... В командных файлах Windows вам нужно будет избежать символов% для команд ftype. "ftype Python.File = C: \ tools \ Python27 \ python.exe %% 1 %% *" – Nathan

0

Вы можете создать файл .bat и изменить PATH и PYTHONPATH там, а затем запустить .py из этого .bat-файла. Нечто подобное я думаю

set PATH=C:\Python26; python myfile.py

Ofcourse, добавить что-нибудь еще на свой путь, который вы хотите.

0

У меня был такой же «отказано в доступе» проблемы, как Дана с ответом m0nonoke на моей установке Windows 7 с помощью cmd.exe.

Но я нашел эту работу вокруг с помощью замены оболочки TCC/LE и настроенный файл запуска ...

При рабочем каталоге создайте подкаталог конф. В этом каталоге создать файл для запуска TCC/LE называется tcstart.btm

@echo off 
rem Override system python binding to handle virtualenvironments 
set .py;.pyc=python.exe 

Теперь создайте (копия) TCC/LE ярлык на рабочем столе и переименовать его соответствующим образом. Откройте свойства для ярлыка и добавьте в Target «C: \ django \ config \ tcstart.btm». Вы, вероятно, хотите, чтобы установить Start, чтобы что-то полезное, например C: \ Джанго

Solution найдено в данном руководстве по установке Django and Windows.

 Смежные вопросы

  • Нет связанных вопросов^_^