2016-11-03 28 views
5

próbuję odtworzyć virtualenv:OError: [ERRNO 26] Plik tekstowy zajęty: '/...myvirtualenv/bin/python'

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

otrzymuję ten wyjątek:

[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' 

Czy ktoś wie, dlaczego ten wyjątek się dzieje?

+0

uruchom ponownie komputer, prawdopodobnie dostał aplikację ducha. Lub ten właściciel pliku nie system_default_user. – dsgdfg

+0

@dsgdfg To było to samo po ponownym uruchomieniu komputera. Własność pliku jest w porządku, sprawdziłem to dwa razy. – guettli

+0

Aktualizacja pakietu przy użyciu plików konfiguracyjnych Pythona i Pythona jest pod blokadą. Zatrzymaj każdy proces Pythona i użyj 'bash' do zastąpienia/usunięcia/zmiany wirtualnego pliku env. Lub użyj swoich zmian jako "Pakiet". – dsgdfg

Odpowiedz

8

miałem identyczny problem :)

virtualenv Works (AFAIK) modyfikując kopię pliku wykonywalnego Pythona w obszarze katalogu virtualenv.

Musisz mieć proces używający virtualenv już, więc kopia pliku python jest "w użyciu" (technicznie to mmap() 'ed do pamięci podczas jej wykonywania).

Jeśli nie musisz zmieniać konfiguracji virtualenv, nie musisz ponownie uruchamiać komendy virtualenv za każdym razem - po jej skonfigurowaniu aktywujesz ją w razie potrzeby.

Jak się dlaczego tak się dzieje - Jest możliwe, że masz usługę działa w czasie startu:

ps -ef | grep python 
+0

Tak, wiem, że nie muszę ponownie uruchamiać polecenia virtualenv. Zaktualizowałem swój laptop z ubuntu-14 do ubuntu-16. Po tym konieczne ponowne uruchomienie. – guettli

+0

prawdziwy przykład życia może znajdować się w innej sesji ssh, otwartej powłoce Django, powodującej taki błąd podczas bootstr ... – andi