Venv не уважает аргумент - PullRequest
       64

Venv не уважает аргумент

0 голосов
/ 12 февраля 2020

Я ssh'd в среде разработки (vagrant Ubuntu box), и мой каталог проекта сопоставлен с другой файловой системой (через vbox), поэтому символические ссылки не поддерживаются. Я пытаюсь создать новый venv, но флаг --copies не соблюдается.

$sudo python -m venv --copies venv 
Error: [Errno 71] Protocol error: 'lib' -> '/home/vagrant/vagrant_projects/rurp/venv/lib64'

Если я использую python 2.7 ($ virtualenv venv --always-copy), он работает, но не с реализацией python3 venv --copies. Аргумент --always-copy был обходным путем для подобных проблем с python2 .x.

Я не смог найти в сети ничего, что указывало бы на ошибку в venv, и я немного растерялся. У кого-нибудь еще была эта проблема?

$ python -V
Python 3.6.9

Заранее спасибо.

Редактировать: Также проверено в python 3.8.1.

1 Ответ

0 голосов
/ 12 февраля 2020

В приведенном выше комментарии @ chepner похоже, что аргумент --copies игнорируется в системах, отличных от Windows (об этом нет упоминания в документации). Мне удалось обойти эту проблему, создав venv в локальном каталоге, вручную скопировав символическую ссылку lib64 в реальный каталог, переместив venv в папку моего проекта и вручную обновив сценарии активации. Ужасно, но это работает.

$cd ~
$python3 -m venv --copies --clear venv
$cp -r --remove-destination `readlink lib64` lib64
$cp -r venv vagrant_project/rurp/

Я был бы рад принять более элегантный ответ.

...