Virtualenv: OSError: [Errno 30] Файловая система только для чтения

Созданный на 27 дек. 2011  ·  27Комментарии  ·  Источник: pypa/virtualenv

Я начал получать странную ошибку при попытке создать новые среды:

Traceback (most recent call last):
     File "/usr/local/bin/virtualenv", line 9, in <module>
       load_entry_point('virtualenv==1.7', 'console_scripts', 'virtualenv')()
     File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 928, in main
       never_download=options.never_download)
     File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 1029, in create_environment
       site_packages=site_packages, clear=clear))
     File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 1145, in install_python
       fix_local_scheme(home_dir)
     File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 1430, in fix_local_scheme
       os.symlink(os.path.abspath(home_dir), local_path)
OSError: [Errno 30] Read-only file system

Кажется, у меня нет проблем с созданием символических ссылок ни при каких других обстоятельствах.

Я запускаю Ubuntu 11.04 через Virtualbox — я пытался уничтожить и восстановить коробку с нуля (используя неизмененный манифест марионетки), но та же ошибка сохраняется.

Самый полезный комментарий

обновите virtualenv до последней версии (1.11.6) и используйте ее как

virtualenv --always-copy testenv

параметры не будут использовать жесткую ссылку, но скопируют файлы

Все 27 Комментарий

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

Этот код был изменен в разрабатываемой версии virtualenv, поэтому вы можете попробовать с virtualenv==dev и посмотреть, поможет ли это.

У меня также есть эта проблема в Ubuntu 11.04 на Virtualbox. @rlayte , если вы поняли, как это решить, я бы хотел знать, как это сделать.

Я почти уверен, что сейчас это проблема с виртуальными боксами, поэтому, вероятно, ее следует обсудить с ними, если вы хотите найти реальное решение.

Я «решил» это, переместив каталог .virtualenvs в частную папку, поскольку проблема существует только в папках, общих с os x.

В конце концов я решил отказаться от виртуального бокса из-за такой нестабильности.

В итоге я дал группе общих папок права на запись в OSX, затем перемонтировал ее в Ubuntu, и это, похоже, решило проблему.

Да, только что столкнулся с этой проблемой, но я думаю, что это ошибка VirtualBox: https://www.virtualbox.org/ticket/10085#comment:12

В основном символические ссылки больше не работают в общих папках по соображениям безопасности.

Это можно решить в виртуальном боксе, когда проблемы создаются общими папками, запустив:

virtualenv ~/[my-env-name]
source ~/[my-env-name]/bin/activate

Это не сохранит вашу среду в вашей папке, но лучше всего использовать файл requirements.txt и указать вашей системе контроля версий игнорировать дерево вашей среды.

Обновление : Конечно, хороший ночной сон все проясняет. Установка python-dev как sudo изменила разрешения в некоторых файлах Python, что привело к сбою команды virtualenv, но я могу просто запустить это как sudo, и это работает.

Я вижу эту же ошибку. Если я создам новую виртуальную машину из базовой коробки lucid32, а затем выполню следующие команды:

  • sudo apt-get install python-pip
  • sudo pip install virtualenv
  • cd /vagrant/
  • virtualenv test0
  • sudo apt-get install python-dev
  • virtualenv test1

Тогда первый virtualenv будет создан успешно, а второй завершится ошибкой с указанным выше [Errno 30] Read-only file system . Я разместил полный вывод этого процесса здесь: https://gist.github.com/3346994. (Мне нужен python-dev для mysql-python.)

Кто-нибудь знает, как я могу исправить/обойти это? Я бы предпочел продолжать использовать общие папки, и это похоже на проблему с VirtualBox. Спасибо, и дайте мне знать, если я могу предоставить дополнительную информацию!

sudo pip install virtualenv==dev помогло мне. Я на хосте OS X Lion и Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-23-generic x86_64) в качестве гостя.

Я снова заметил это, когда пытался настроить новую виртуальную машину, и кажется, что изменение между virtualenv 1.8.2 и 1.8.3 привело к тому, что эта ошибка вернулась:

vagrant<strong i="6">@lucid32</strong>:/vagrant$ virtualenv test
New python executable in test/bin/python
Traceback (most recent call last):
  File "/usr/local/bin/virtualenv", line 9, in <module>
    load_entry_point('virtualenv==1.8.3', 'console_scripts', 'virtualenv')()
  File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 961, in main
    never_download=options.never_download)
  File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 1062, in create_environment
    site_packages=site_packages, clear=clear))
  File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 1482, in install_python
    os.symlink(py_executable_base, full_pth)
OSError: [Errno 30] Read-only file system

Сейчас я могу использовать 1.8.2, но решил упомянуть здесь. Спасибо!

@lehrblogger Не могли бы вы запустить strace -f virtualenv test , чтобы определить, какие пути вызывают ошибку?

@brentsmyth Соответствующего бита там нет. Используйте pastebin или gist.

гораздо лучшая идея...

http://pastebin.com/imzmMYFj

Однако проблема заключается в виртуальном боксе. Вы можете найти некоторые обходные пути по этим ссылкам...

https://github.com/mitchellh/vagrant/issues/713
http://ahtik.com/blog/2012/08/16/fixing-your-virtualbox-shared-folder-symlink-error/

@ g2p !! Извините, что я так долго не мог добраться до этого, я был в путешествии и, должно быть, пропустил письмо.

https://gist.github.com/4211296

Я использую Mac OS X 10.8.2 и только что обновился до последних версий VirtualBox (4.2.4) и Vagrant (1.0.5). Я буду рад предоставить больше информации, если это будет полезно, и я обещаю, что отвечу быстрее :)

(Хорошо, если мне придется использовать один из обходных путей VirtualBox, но странно то, что он работает с virtualenv 1.8.2, а не с 1.8.4 — см. конец моей сути.)

Я столкнулся с той же проблемой. Использование VBoxManage setextradata, предложенное в https://www.virtualbox.org/ticket/10085, сработало для меня. Но это еще одна мелочь, которая делает процесс запуска виртуального локального dev-сервера ненужным громоздким :)

Мне удалось заставить VBoxManage setextradata работать и у меня (с virtualenv 1.8.4), используя «v-root» в качестве моего «SHARE_NAME» в моем Vagranfile, как это предлагается в этом комментарии . Спасибо всем за информацию/предложения!

Мои действия по исправлению:

  1. Используйте virtualenv==1.8.2 (не работает с 1.8.4!)
  2. setextradata в хост-ОС:
VBoxManage setextradata CENTOS VBoxInternal2/SharedFoldersEnableSymlinksCreate/home/oe 1

, где CENTOS - имя ОС Virtualbox, /home/oe - имя смонтированной папки

  1. Смонтируйте устройство в гостевой ОС с правами на чтение-запись:
sudo mount -t vboxsf -o rw,uid=1000 shared_folder /mnt/shared_folder

, где uid=1000 - uid текущего пользователя в гостевой ОС (см. /etc/passwd).

обновите virtualenv до последней версии (1.11.6) и используйте ее как

virtualenv --always-copy testenv

параметры не будут использовать жесткую ссылку, но скопируют файлы

Вот некоторая полезная информация. Я исправил эту проблему:
http://forums.getpebble.com/discussion/5538/virtualbox-read-only-file-system

Ссылка на решение:

http://www.ahtik.com/blog/fixing-your-virtualbox-shared-folder-symlink-error/#comment -1388791879

Я получил эту ошибку в общем каталоге с хоста vm. Когда я переключился на каталог, который не является общим, все было в порядке.

@socrateslee Спасибо, приятель. Вы избавили меня от многих хлопот!

причина в том, что вы пытались запустить virtualenv в общей папке

OSError: [Errno 30] Файловая система только для чтения
если вы используете общий диск внутри vm и пытаетесь выполнить tox внутри этого каталога, это вызовет эту ошибку. Простое решение — скопировать этот исходный код в какой-нибудь каталог в виртуальной машине, скажем, в ваш домашний каталог /home/sunil/projectName/ . и выполните команду tox внутри этого каталога.

Теперь у Tox есть способ не использовать символические ссылки в virtualenv .

`[тестенв]

всегдакопировать = Истина`

Я не использую Virtual Box и столкнулся с этой проблемой. Я не знаю, почему в конкретной папке это не работает. Я сделал chmod и chown, но это просто не работает.

ERROR: Could not install packages due to an EnvironmentError.
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/virtualenv_support/pip-19.1.1-py2.py3-none-any.whl/pip/_internal/commands/install.py", line 414, in run
    use_user_site=options.use_user_site,
  File "/usr/local/lib/python3.7/site-packages/virtualenv_support/pip-19.1.1-py2.py3-none-any.whl/pip/_internal/req/__init__.py", line 58, in install_given_reqs
    **kwargs
  File "/usr/local/lib/python3.7/site-packages/virtualenv_support/pip-19.1.1-py2.py3-none-any.whl/pip/_internal/req/req_install.py", line 920, in install
    use_user_site=use_user_site, pycompile=pycompile,
  File "/usr/local/lib/python3.7/site-packages/virtualenv_support/pip-19.1.1-py2.py3-none-any.whl/pip/_internal/req/req_install.py", line 448, in move_wheel_files
    warn_script_location=warn_script_location,
  File "/usr/local/lib/python3.7/site-packages/virtualenv_support/pip-19.1.1-py2.py3-none-any.whl/pip/_internal/wheel.py", line 426, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/usr/local/lib/python3.7/site-packages/virtualenv_support/pip-19.1.1-py2.py3-none-any.whl/pip/_internal/wheel.py", line 357, in clobber
    ensure_dir(dest)  # common for the 'include' path
  File "/usr/local/lib/python3.7/site-packages/virtualenv_support/pip-19.1.1-py2.py3-none-any.whl/pip/_internal/utils/misc.py", line 99, in ensure_dir
    os.makedirs(path)
  File "/Users/aw3/Projects/python/platzi-python/appengine_contact_server/venv/bin/../lib/python3.7/os.py", line 211, in makedirs
    makedirs(head, exist_ok=exist_ok)
  File "/Users/aw3/Projects/python/platzi-python/appengine_contact_server/venv/bin/../lib/python3.7/os.py", line 211, in makedirs
    makedirs(head, exist_ok=exist_ok)
  File "/Users/aw3/Projects/python/platzi-python/appengine_contact_server/venv/bin/../lib/python3.7/os.py", line 221, in makedirs
    mkdir(name, mode)
OSError: [Errno 30] Read-only file system: '/lib'
Cleaning up...
Removed build tracker '/private/var/folders/31/j0bhpp4s3qx1kcpz6fnq__b40000gn/T/pip-req-tracker-ry41njg8'
----------------------------------------
...Installing setuptools, pip, wheel...done.
Traceback (most recent call last):
  File "/usr/local/bin/virtualenv", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/site-packages/virtualenv.py", line 870, in main
    symlink=options.symlink,
  File "/usr/local/lib/python3.7/site-packages/virtualenv.py", line 1173, in create_environment
    install_wheel(to_install, py_executable, search_dirs, download=download)
  File "/usr/local/lib/python3.7/site-packages/virtualenv.py", line 1019, in install_wheel
    _install_wheel_with_search_dir(download, project_names, py_executable, search_dirs)
  File "/usr/local/lib/python3.7/site-packages/virtualenv.py", line 1110, in _install_wheel_with_search_dir
    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=script)
  File "/usr/local/lib/python3.7/site-packages/virtualenv.py", line 963, in call_subprocess
    raise OSError("Command {} failed with error code {}".format(cmd_desc, proc.returncode))
OSError: Command /Users/aw3/Projects/...r/venv/bin/python3.7 - setuptools pip wheel failed with error code 1

В моем случае это был setup.cfg с пустым prefix= , который вызывал этот беспорядок.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги