Я начал получать странную ошибку при попытке создать новые среды:
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, поэтому вы можете попробовать с 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.
гораздо лучшая идея...
Однако проблема заключается в виртуальном боксе. Вы можете найти некоторые обходные пути по этим ссылкам...
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, как это предлагается в этом комментарии . Спасибо всем за информацию/предложения!
Мои действия по исправлению:
VBoxManage setextradata CENTOS VBoxInternal2/SharedFoldersEnableSymlinksCreate/home/oe 1
, где CENTOS - имя ОС Virtualbox, /home/oe - имя смонтированной папки
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=
, который вызывал этот беспорядок.
Самый полезный комментарий
обновите virtualenv до последней версии (1.11.6) и используйте ее как
параметры не будут использовать жесткую ссылку, но скопируют файлы