Я использую virtualenv 1.9.1 на cygwin под win 7. Каждый virtualenv создается без каких-либо параметров (кроме имени каталога, очевидно). Нет никаких причудливых настроек.virtualenv не создает пакеты PYTHONPATH/pip, которые не работают
Все virtualenvs свежие, в том смысле, что я не создал никаких сценариев-оболочек и не редактировал ни один из скриптов virtualenv. Я абсолютно уверен, что я не делаю ничего особенного (т. Е. Не злоупотребляю virtualenv, а не предпринимаю действия, которые расстраивают его работу), что заставляет PYTHONPATH отсутствовать в нескольких virtualenvs.
Виртуальный скрипт активации для каждого нового virtualenv не создает PYTHONPATH. pip устанавливает пакеты под номером $VIRTUAL_ENV/lib/python2.7/site-packages/<packagedir>
(например, lib/python2.7/site-packages/html5lib
).
Поведение ПП кажется желательным. Тем не менее, запуск python (после активации virtualenv) приводит к тому, что пакеты с установленными пакетами не загружаются (т. Е. «No module named ...»).
Обновление: добавление PYTHONPATH в activate
действительно «решает» проблему. Очевидно, я не хочу вручную поддерживать это, а также не должен обновлять activate_this.py
. Я все равно хотел бы знать, почему virtualenvs теперь не работают прямо из коробки.
Какое решение? virtualenv никогда не делал этого. Что с этим не так?
Update 2: Вот выход работает virtualenv с -vv:
$ virtualenv -vv newvirtualenv
Creating newvirtualenv/lib/python2.7
Symlinking Python bootstrap modules
Symlinking newvirtualenv/lib/python2.7/config
Symlinking newvirtualenv/lib/python2.7/lib-dynload
Symlinking newvirtualenv/lib/python2.7/os.py
Ignoring built-in bootstrap module: posix
Symlinking newvirtualenv/lib/python2.7/posixpath.py
Cannot import bootstrap module: nt
Symlinking newvirtualenv/lib/python2.7/ntpath.py
Symlinking newvirtualenv/lib/python2.7/genericpath.py
Symlinking newvirtualenv/lib/python2.7/fnmatch.py
Symlinking newvirtualenv/lib/python2.7/locale.py
Symlinking newvirtualenv/lib/python2.7/encodings
Symlinking newvirtualenv/lib/python2.7/codecs.py
Symlinking newvirtualenv/lib/python2.7/stat.py
Symlinking newvirtualenv/lib/python2.7/UserDict.py
File newvirtualenv/lib/python2.7/lib-dynload/readline.dll already exists
Symlinking newvirtualenv/lib/python2.7/copy_reg.py
Symlinking newvirtualenv/lib/python2.7/types.py
Symlinking newvirtualenv/lib/python2.7/re.py
Symlinking newvirtualenv/lib/python2.7/sre.py
Symlinking newvirtualenv/lib/python2.7/sre_parse.py
Symlinking newvirtualenv/lib/python2.7/sre_constants.py
Symlinking newvirtualenv/lib/python2.7/sre_compile.py
File newvirtualenv/lib/python2.7/lib-dynload/zlib.dll already exists
Symlinking newvirtualenv/lib/python2.7/warnings.py
Symlinking newvirtualenv/lib/python2.7/linecache.py
Symlinking newvirtualenv/lib/python2.7/_abcoll.py
Symlinking newvirtualenv/lib/python2.7/abc.py
Symlinking newvirtualenv/lib/python2.7/_weakrefset.py
Creating newvirtualenv/lib/python2.7/site-packages
Writing newvirtualenv/lib/python2.7/site.py
Writing newvirtualenv/lib/python2.7/orig-prefix.txt
Writing newvirtualenv/lib/python2.7/no-global-site-packages.txt
Creating parent directories for newvirtualenv/include
Symlinking newvirtualenv/include/python2.7
Creating newvirtualenv/bin
New python executable in newvirtualenv/bin/python2.7
Changed mode of newvirtualenv/bin/python2.7 to 0755
Also creating executable in newvirtualenv/bin/python
Changed mode of newvirtualenv/bin/python to 0755
Testing executable with newvirtualenv/bin/python2.7 -c "import sys;out=sys.stdout;getattr(out, "buffer", out).write(sys.prefix.encode("utf-8"))"
Got sys.prefix result: u'/cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv'
Creating newvirtualenv/lib/python2.7/distutils
Writing newvirtualenv/lib/python2.7/distutils/__init__.py
Writing newvirtualenv/lib/python2.7/distutils/distutils.cfg
Using existing setuptools egg: /usr/lib/python2.7/site-packages/virtualenv_support/setuptools-0.6c11-py2.7.egg
Installing setuptools...
Running command /cygdrive/c/Users/ma...ualenv/bin/python2.7 -c "#!python
\"\"\"Bootstra...sys.argv[1:])
" -v /usr/lib/python2.7/s...ols-0.6c11-py2.7.egg
Processing setuptools-0.6c11-py2.7.egg
Copying setuptools-0.6c11-py2.7.egg to /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/lib/python2.7/site-packages
Adding setuptools 0.6c11 to easy-install.pth file
Saving /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/lib/python2.7/site-packages/easy-install.pth
Installing easy_install script to /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/bin
changing mode of /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/bin/easy_install to 755
Installing easy_install-2.7 script to /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/bin
changing mode of /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/bin/easy_install-2.7 to 755
Installed /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg
Processing dependencies for setuptools==0.6c11
Finished processing dependencies for setuptools==0.6c11
...Installing setuptools...done.
Installing existing pip-1.3.1.tar.gz distribution: /usr/lib/python2.7/site-packages/virtualenv_support/pip-1.3.1.tar.gz
Installing pip...
Running command /cygdrive/c/Users/ma...ualenv/bin/python2.7 -x /cygdrive/c/Users/ma...env/bin/easy_install /usr/lib/python2.7/s...ort/pip-1.3.1.tar.gz
Processing pip-1.3.1.tar.gz
Running pip-1.3.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-ZP_VIv/pip-1.3.1/egg-dist-tmp-H3XBh_
warning: no files found matching '*.html' under directory 'docs'
warning: no previously-included files matching '*.txt' found under directory 'docs/_build'
no previously-included directories found matching 'docs/_build/_sources'
Adding pip 1.3.1 to easy-install.pth file
Installing pip script to /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/bin
Installing pip-2.7 script to /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/bin
Installed /cygdrive/c/Users/marcin/Documents/codeprojects/newvirtualenv/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg
Processing dependencies for pip==1.3.1
Finished processing dependencies for pip==1.3.1
...Installing pip...done.
Writing newvirtualenv/bin/activate
Writing newvirtualenv/bin/activate.fish
Writing newvirtualenv/bin/activate_this.py
Writing newvirtualenv/bin/activate.csh
Уродливое решение: возможно, взломать скрипт 'активировать' и добавить путь туда вручную? –
@JakubM. Это произошло со мной, но это похоже либо на то, что я не делаю ничего более очевидного, или на ошибку в текущей версии virtualenv. – Marcin
'PYTHONPATH' - это красная сельдь. ** не устанавливается ** с помощью 'activate'. Это никогда не бывает. Исполняемый файл python в 'bin/python.exe' отвечает за установку' PYTHONHOME' (внутренне). Можете ли вы запустить 'virtualenv -vv' (так что два параметра' -v') и показать нам этот вывод отладки в вашем вопросе, чтобы помочь нам отладить проблему? –