virtualenv создает в Ubuntu каталог с именем local - PullRequest
0 голосов
/ 30 января 2019

Если я создаю virtualenv с Ubuntu 18.04, создается каталог с именем local.

virtualenv test-env
cd test-env
ls -l local/

Вывод:

lrwxrwxrwx 1 foo foo 30 Jan 30 10:47 bin -> /home/foo/tmp/test-env/bin
lrwxrwxrwx 1 foo foo 34 Jan 30 10:47 include -> /home/foo/tmp/test-env/include
lrwxrwxrwx 1 foo foo 30 Jan 30 10:47 lib -> /home/foo/tmp/test-env/lib

Версия:

virtualenv --version
15.0.3

Этого не происходит на других машинах (например, на предприятии SuSE Linux)

AFAIK этот каталог не нужен.

Есть ли способ избежать этого каталога с именем local, которыйне нужно?

(речь идет о Python 2.7)

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Просматривая документы и некоторые старые сообщения SO, я наткнулся на этот ответ и официальные Примечания к выпуску .

На моем Ubuntu 16.04 иvirtualenv 15.0.1 combo, папка ~/.local содержит все связанные с Python библиотеки, документацию и двоичные файлы.

Я подозреваю, что virtualenv пытается «сопоставить» этот подход, чтобы сохранить совместимость со сценариями, запускаемыми в пустой системе, поскольку Python $PATH ищет там модули, пакеты и т. Д., Связанные с Python.

Python 2.7.12 (default, Dec  4 2017, 14:50:18)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print '\n'.join(sys.path)

/usr/lib/python2.7
/usr/lib/python2.7/plat-x86_64-linux-gnu
...
/home/<username>/.local/lib/python2.7/site-packages
...
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages

Если я запускаю одну и ту же команду внутри моего virtualenv, я получаю оба каталога в своем пути Python.

Python 2.7.12 (default, Dec  4 2017, 14:50:18)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print '\n'.join(sys.path)

/home/<username>/python-venv-tests/lib/python2.7
/usr/lib/python2.7
...
/home/<username>/python-venv-tests/local/lib/python2.7/site-packages
/home/<username>/python-venv-tests/lib/python2.7/site-packages
...

Итак, чтобы ответить на ваш вопрос

  • Этот каталог .local содержит только символические ссылки на «правильные» /bin, /include, /lib вашей виртуальной среды, поэтому нет опасности дублирования библиотек
  • Скорее всего, это делается в качестве меры совместимости с Ubuntu с использованием ~/.local для пакетов Python
  • Это означает, что вы можете удалить это и / или изменить свой Python $PATH, если вам это действительно нужно, но это не окажет никакого влияния на ваш рабочий процесс (или если вы планируетеперенести виртуальный env на другой хост).
  • В общем, я бы рекомендовал оставить все как есть, чтобы виртуальная среда соответствовала структуре системывозможно, и что другие сценарии / пользователи, которые могут иметь жестко закодированные значения в зависимости от этого, избегают ошибок.
0 голосов
/ 30 января 2019

В Ubuntu virtualenv имитирует установку машины, и local является частью этого.Если вы хотите игнорировать это в своем проекте, вы можете добавить его к .gitignore

...