Подтвердить что ты не робот

Virtualenv не создает среду

Я установил Virtualenv на Ubuntu 12.04 и использовал его для работы над образцом проекта под единым рабочим столом. Я использую VirtualBox и имею некоторые проблемы с рабочим столом единства, поэтому он был изменен на рабочий стол KDE.

Теперь я пытаюсь создать новый проект, но virtualenv не позволит мне создать новую среду в моей папке проекта. В терминале я перехожу к папке проекта, введите virtualenv venv и получите следующие сообщения об ошибках:

Traceback (most recent call last):
  File "/usr/bin/virtualenv", line 3, in <module>
    virtualenv.main()
  File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 938, in main
    never_download=options.never_download)
  File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 1039, in create_environment
    site_packages=site_packages, clear=clear))
  File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 1215, in install_python
    copyfile(stdinc_dir, inc_dir)
  File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 430, in copyfile
    copyfileordir(src, dest)
  File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 405, in copyfileordir
    shutil.copytree(src, dest, True)
  File "/usr/lib/python2.7/shutil.py", line 206, in copytree
    raise Error, errors
shutil.Error: [('/usr/include/python2.7/numpy', 'venv/include/python2.7/numpy', '[Errno 30] Read-only file system')]

Может ли кто-нибудь помочь мне разрешить это? Я попытался переустановить virtualenv, но без радости. Благодаря

4b9b3361

Ответ 1

После немного более глубокого поиска в Google обнаружено, что это проблема VirtualBox, а не проблема Ubuntu. Общие папки защищены от этой активности. Я не знаю, как/почему он работал в первый раз, но это известная ошибка. Я создал проект за пределами общей папки без проблем. Спасибо за вход Дугала.

Ответ 2

Virtualenv использует символические ссылки (shutil.copytree использует их, см. traceback). Создание символических ссылок в общей папке VirtualBox отключено. Простой тест в терминале (внутри гостевой машины):

$ ln -s testfile

Либо вы получите failed to create symbolic link './testfile': Read-only file system или Protocol error.

Вы можете включить символические ссылки в общих папках, выполнив в терминале хоста (решение от schisamo):

$ vboxmanage setextradata VM_NAME "VBoxInternal2/SharedFoldersEnableSymlinksCreate/NAME_OF_YOUR_SHARED_FOLDER" 1

Замените VM_NAME именем виртуальной машины, как показано в VirtualBox Manager:

VM_NAME example

и NAME_OF_YOUR_SHARED_FOLDER с именем общей папки, которое вы можете видеть в настройках виртуальной машины:

Shared folders settings

После настройки перезапустите VirtualBox.

Вы можете проверить настройки (на хосте) с помощью

$ vboxmanage getextradata VM_NAME enumerate

Исправить для Windows (Ahti Kitsik) (спасибо Bryan answer).


VirtualBox реализовал символические ссылки для общих папок начиная с версии 4.0 (для Linux и Solaris), но отключен после версии 4.1.8 по соображениям безопасности. Это может быть причиной, по которой она сначала работала для вас, а затем и нет.

Ответ 3

Ахти Кицик опубликовал обходной путь в своем блоге: https://ahtik.com/fixing-your-virtualbox-shared-folder-symlink-error/

VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1

YOURSHAREFOLDERNAME - это имя общей папки в соответствии с VirtualBox.

Если вы используете Vagrant, здесь исправление для вашего Vagrantfile:

config.vm.provider :virtualbox do |vb|
  vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate//vagrant","1"]
end

Ответ 4

Я столкнулся с такой же ошибкой с virtualenv и VirtualBox (управляемый через Vagrant) с гостем Ubuntu.

Помня о предыдущем инциденте, когда разрешения на файл вызвали у меня проблемы, я попытался включить nfs-обмен в моем Vagrantfile:

config.vm.share_folder("v-root", "/home/vagrant/apps", "/home/gareth/Projects/project-name/", :nfs => true)

Это решило проблему для меня. Процесс получения совместного использования nfs на VirtualBox немного более активен, хотя:

https://www.virtualbox.org/wiki/Sharing_files_on_OSE