web-dev-qa-db-fra.com

OError: [Errno 26] Fichier texte occupé: '/...myvirtualenv/bin/python'

J'essaie de recréer le virtualenv:

foo_bar_d@aptguettler:~$ virtualenv --system-site-packages . 

Je reçois cette exception:

foo_bar_d@aptguettler:~$ 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'

Est-ce que quelqu'un sait pourquoi cette exception se produit?

17
guettli

J'ai eu exactement le même problème :)

virtualenv fonctionne (afaik) en modifiant une copie de l'exécutable python dans la zone du répertoire virtualenv.

Vous devez déjà avoir un processus utilisant virtualenv pour que la copie de l'exécutable python soit "en cours d'utilisation" (techniquement c'est mmap () "en mémoire pendant son exécution).

Sauf si vous devez modifier la configuration d'un virtualenv, vous n'avez pas besoin de réexécuter la commande virtualenv à chaque fois - une fois qu'il est configuré, vous l'activez simplement en cas de besoin.

Quant à savoir pourquoi cela se produit - Il est possible que vous ayez un service en cours d'exécution au démarrage:

ps -ef | grep python
24
lbt