我尝试重新创建virtualenv:
foo_bar_d@aptguettler:~$ virtualenv --system-site-packages .
我得到了这个例外:
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'
有人知道为什么会发生这种异常吗?
答案 0 :(得分:20)
我遇到了完全相同的问题:)
virtualenv通过修改virtualenv目录区域中python可执行文件的副本来工作(afaik)。
你必须已经有一个使用virtualenv的进程,所以python可执行文件的副本是“正在使用”(技术上它是mmap()在执行时被编入内存)。
除非您需要更改virtualenv的设置,否则每次都不需要重新运行virtualenv命令 - 一旦设置完成,您只需在需要时激活它。
至于它为什么会发生 - 你可能在启动时运行了一个服务:
ps -ef | grep python
答案 1 :(得分:0)
使用pkill python
我会工作