it-swarm.com.ru

Использование virtualenv с пробелами в пути

Я настроил среду virtualenv на своем Mac, но не могу заставить Pip установить пакеты. Это терпит неудачу со следующей ошибкой:

/Volumes/Macintosh: bad interpreter: No such file or directory

Я отследил проблему до пробела в пути, как здесь ответили: https://stackoverflow.com/a/10873611/126564
(путь /Volumes/Macintosh HD/Python/my_project)

Но это небольшая проблема. Предлагаемое решение заключается в:

"просто поместите свою среду virtualenv в путь без пробела"

но часть с пробелом - это сам объем. Во всех моих путях будет пробел, если я не сохраню их в каталоге /. И я не думаю, что «хранить ваши вещи вне пространства пользователя» - это хорошее решение.

Есть ли лучшее решение для этого?

48
redwall_hp

Пробую это:

  • отредактируйте bin/activate, измените VIRTUAL_ENV='/Volumes/Macintosh HD/Python/my_project' и измените PATH="$VIRTUAL_ENV/bin:$PATH", чтобы он работал в вашей среде. используя echo $PATH, чтобы проверить, работает ли он.
  • редактируя bin/pip и bin/easy_install, измените первую строку в двух файлах на 

    #!/usr/bin/env python

Выполнив 2 вышеуказанных шага, вы заставите ваши virtualenv работать (также pip/easy_install).

34
Vincent Wen

Обратите внимание, что вам не нужно использовать папку вашего проекта для virtualenv. Например, вы можете поместить вашу virtualenv в папку/tmp или любую другую папку без пробелов:

virtualenv /tmp/temporary_virtualenv
virtualenv /home/my_envs/env_for_projectname
17
Oleksandr Fedorov

У меня есть еще один обходной путь - вам просто нужно использовать pip package вместо pip script . Например:

python -m pip install .

или даже:

python -m pip install -U pip

Для меня работает как шарм и не требует изменений в файлах.

7
Tupteq

Редактирование файла bin/activate и выход из пробелов сработали для меня . Отредактируйте и сохраните файл, затем запустите source bin/activate.

5
Leandro Lima

Если на вашем Mac нет нетипичной настройки диска, путь /Volumes/Macintosh HD должен быть символической ссылкой на /. Другими словами, вместо 

$ virtualenv /Volumes/Macintosh\ HD/venvpath

ты можешь просто сделать

$ virtualenv /venvpath

Не то чтобы я пытался потворствовать программам, не обрабатывающим пробелы в именах файлов. Я согласен с комментарием Хьюго выше: следите за актуальной проблемой GitHub .

3
duozmo

По состоянию на конец 2018 года последние версии pip и virtualenv правильно обрабатывают пробелы в venv dir.

См. https://github.com/pypa/virtualenv/issues/53#issuecomment-434461292 .

1
Greg Dubicki