Skip to main content
 首页 » 编程设计

python之如何在 $WORKON_HOME 之外的版本控制下保持 virtualenvwrapper Hook

2025年05月04日9EasonJim

我在 ~/.virtualenvs(我为 $WORKON_HOME 变量定义的目录)下创建了许多 virtualenvwrapper Hook 。

我通常喜欢将这样的系统文件置于版本控制之下——例如,我有一个高度自定义的 bash 配置文件 ~/Repos/dotfiles/bash_profile 是符号链接(symbolic link)到 ~/.bash_profile。

但是,当我尝试将 virtualenvwrapper Hook 移动到 ~/Repos/dotfiles/virtualenvwrapper_hooks/ 下,然后将它们符号链接(symbolic link)回 ~/.virtualenvs/ 下的原始文件名时,当我打开一个新的终端窗口时出现以下错误:

stevedore.extension error calling 'user_scripts': [Errno 62] Too many levels of symbolic links: '/Users/yiqing/.virtualenvs/postactivate' 
stevedore.extension [Errno 62] Too many levels of symbolic links: '/Users/yiqing/.virtualenvs/postactivate' 
Traceback (most recent call last): 
  File "/Library/Python/2.7/site-packages/stevedore/extension.py", line 137, in _invoke_one_plugin 
    response_callback(func(e, *args, **kwds)) 
  File "/Library/Python/2.7/site-packages/virtualenvwrapper/hook_loader.py", line 185, in invoke 
    ext.plugin(args) 
  File "/Library/Python/2.7/site-packages/virtualenvwrapper/user_scripts.py", line 143, in initialize 
    make_hook(get_path('$VIRTUALENVWRAPPER_HOOK_DIR', filename), comment) 
  File "/Library/Python/2.7/site-packages/virtualenvwrapper/user_scripts.py", line 124, in make_hook 
    f = open(filename, 'w') 
IOError: [Errno 62] Too many levels of symbolic links: '/Users/yiqing/.virtualenvs/postactivate' 

对整个目录进行符号链接(symbolic link)(rm -rf ~/.virtualenvs ; ln -sF ...)也不起作用,因为当我尝试用 Tab 键完成命令时,它会给出返回:

NOTE: Virtual environments directory /Users/yiqing/.virtualenvs does not exist. Creating... 
mkdir: /Users/yiqing/.virtualenvs: Input/output error 

除了在 ~/.virtualenvs 中创建 Git 存储库之外,我想知道我还有哪些其他选项可以将这些 Hook 置于版本控制之下?

请您参考如下方法:

我想通了!

令我沮丧的是,当我尝试对整个目录进行符号链接(symbolic link)时,我不小心指出了相对路径而不是绝对路径。符号链接(symbolic link)绝对路径(提示:$PWD/ 将制表符补全到 OS X 中的完整路径)将起作用:)