2016-11-03 2 views
5

я пытаюсь воссоздать virtualenv:OError: [Errno 26] Текстовый файл занят: '/...myvirtualenv/bin/python'

[email protected]:~$ virtualenv --system-site-packages . 

Я получаю это исключение:

[email protected]:~$ virtualenv --system-site-packages . 
New python executable in /home/foo_bar_d/bin/python 
Traceback (most recent call last): 
    File "/usr/local/bin/virtualenv", line 11, in <module> 
    sys.exit(main()) 
    File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 711, in main 
    symlink=options.symlink) 
    File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 924, in create_environment 
    site_packages=site_packages, clear=clear, symlink=symlink)) 
    File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 1230, in install_python 
    shutil.copyfile(executable, py_executable) 
    File "/usr/lib/python2.7/shutil.py", line 83, in copyfile 
    with open(dst, 'wb') as fdst: 
IOError: [Errno 26] Text file busy: '/home/foo_bar_d/bin/python' 

Кто-нибудь знает, почему это исключение происходит?

+0

Перезагрузите компьютер, вероятно, получил приложение призрак. Или этот владелец файла не system_default_user. – dsgdfg

+0

@dsgdfg это было то же самое после перезагрузки моего компьютера. Владение файлами в порядке, я проверил его дважды. – guettli

+0

Пакет обновления используется в файлах конфигурации python и python. Остановите каждый процесс python и используйте 'bash' для замены/удаления/изменения виртуального env-файла. Или используйте свои изменения как «Пакет». – dsgdfg

ответ

8

У меня была точно такая же проблема :)

virtualenv работает (AFAIK), изменяя копию исполняемого питона в области каталога virtualenv.

У вас должен быть процесс с использованием virtualenv, так что копия исполняемого файла python «используется» (технически это mmap() »в памяти во время ее выполнения).

Если вам не нужно менять настройку virtualenv, вам не нужно повторно запускать команду virtualenv каждый раз - после ее установки вы просто активируете ее, когда это необходимо.

Относительно того, почему это происходит - Вполне возможно, что у вас есть служба, работающая во время загрузки:

ps -ef | grep python 
+0

Да, я знаю, что мне не нужно повторно запускать команду virtualenv. Я обновил свой ноутбук от ubuntu-14 до ubuntu-16. После этого необходимо повторное выполнение. – guettli

+0

пример реальной жизни может быть в другой сессии ssh, открытой оболочкой django, вызывающей такую ​​ошибку при загрузке с помощью тканью ... – andi

Смежные вопросы