【问题标题】:ELPA/Marmalade reports "cannot open load file" for ~/.emacs.d/elpa/archives/-pkgELPA/Marmalade 报告 ~/.emacs.d/elpa/archives/-pkg “无法打开加载文件”
【发布时间】:2011-11-17 03:00:37
【问题描述】:

我已经安装了 Marmalade 并下载了一些有趣的软件包。但是现在,当我启动 Emacs 时,我得到了这个错误:

Cannot open load file: c:/Documents and Settings/Carlos/Datos de programa/.emacs.d/elpa/archives/-pkg

如果我使用--debug-init,我会得到:

Debugger entered--Lisp error: (file-error "Cannot open load file" "c:/Documents and Settings/Carlos/Datos de programa/.emacs.d/elpa/archives/-pkg")
load("c:/Documents and Settings/Carlos/Datos de programa/.emacs.d/elpa/archives/-pkg" nil t)
(if (file-directory-p pkg-dir) (load (concat pkg-dir ... "-pkg") nil t))
(let ((pkg-dir ...)) (if (file-directory-p pkg-dir) (load ... nil t)))

package-load-descriptor("c:/Documents and Settings/Carlos/Datos de programa/.emacs.d/elpa/" "archives")
(lambda (name) (package-load-descriptor dir name))("archives")
mapc((lambda (name) (package-load-descriptor dir name)) ("anything-1.287" "anything-  complete-1.86" "anything-config-0.4.1" "archive-contents" "archive-contents~" "archives" "auto-indent-mode-0.35" "builtin-packages" "builtin-packages~" "clojure-mode-1.7.1" "clojurescript-mode-0.5" "coffee-mode-0.3.0" "color-file-completion-1.0.1" "color-theme-6.6.1" "color-theme-eclipse-0.0.2" "color-theme-github-0.0.3" "color-theme-railscasts-0.0.2" "color-theme-twilight-0.1" "css-mode-1.0" "drag-stuff-0.0.3" "evernote-mode-0.41" "find-file-in-project-2.0" "flymake-coffee-0.4" "flymake-haml-0.5" "flymake-ruby-0.4" "flymake-shell-0.5" "haml-mode-3.0.14" "highlight-parentheses-1.0.1" "html-script-src-0.0.2" "inf-ruby-2.1" "js-comint-0.0.1" "js2-mode-20090814" "lua-mode-20100617" "package.el" "package.el~" "project-local-variables-0.2" "ruby-compilation-0.7" "ruby-electric-1.1" "ruby-mode-1.1" "slime-20100404" "tabbar-2.0.1" "tabbar-ruler-0.2" "yasnippet-0.6.1" "yasnippet-bundle-0.6.1" "zenburn-1.8"))
(if (file-directory-p dir) (mapc (lambda ... ...) (directory-files dir nil "^[^.]")))
(lambda (dir) (if (file-directory-p dir) (mapc ... ...)))("c:/Documents and Settings/Carlos/Datos de programa/.emacs.d/elpa/")
mapc((lambda (dir) (if (file-directory-p dir) (mapc ... ...))) ("c:/Documents and Settings/Carlos/Datos de programa/.emacs.d/elpa/" "/usr/share/emacs/site-lisp/elpa/"))
package-load-all-descriptors()
package-initialize()
  (progn (package-initialize))
(if (load (expand-file-name "~/.emacs.d/elpa/package.el")) (progn (package-initialize)))
(when (load (expand-file-name "~/.emacs.d/elpa/package.el")) (package-initialize))
eval-buffer(#<buffer  *load*> nil "c:/Documents and Settings/Carlos/Datos de programa/.emacs" nil t)  ; Reading at buffer position 9019
load-with-code-conversion("c:/Documents and Settings/Carlos/Datos de programa/.emacs" "c:/Documents and Settings/Carlos/Datos de programa/.emacs" t t)
load("~/.emacs" t t)
#[nil "\205\264

此文件不存在。我试过用谷歌搜索这个问题,但没有找到任何东西。

【问题讨论】:

    标签: emacs marmalade elpa


    【解决方案1】:

    简单。无论出于何种原因,您现在使用的package.el 是来自http://tromey.com/elpa/package.el 的“经典”版本。它与package.el 的最新版本完全不兼容。我不知道您是如何设法使用该版本安装 Marmalade 软件包的;当您安装这些软件包时,您一定有不同版本的package.el,可能是因为您当时使用的是较新的 Emacs。

    解决方法是使用与您的 Emacs 捆绑在一起的版本(如果它足够新的话),或者将您的 ~/.emacs.d/elpa/package.el 替换为 this version,如 Marmalade instructions 中所述。

    【讨论】:

    • 我遇到了同样的问题,这个解决方案对我不起作用。当我将 package.el 文件添加到 ~/.emacs.d/elpa/package.el 并评估 .emacs 缓冲区时,我得到 (file-error "Cannot open load file" "package")
    • 您的 emacs 初始化文件有 2 个可能的位置。一个是~/.emacs,另一个是~/.emacs.d/init.el。由于您使用的是前者,我相信~/.emacs.d 不会放在您的load-path 上。尝试改用后一种布局。最终,最好的解决方案是使用最新的 Emacs 版本,以便捆绑 package.el。有几个合适的稳定版本。
    • 我认为您的意思是“我删除了我的 emacs,现在情况好多了”:D
    【解决方案2】:

    我在尝试解决类似问题时偶然发现了这个问题。就我而言,强制package-initialize 已经解决了问题:

    ;; init.el
    (require 'package)
    (package-initialize)
    

    尽管我没有阅读 package.el 的源代码,但我相信 package.el 中的某种 惰性 会引起问题。虽然这是一个老问题,但我想回答一下,以防其他人需要帮助。

    有关 Emacs 启动的更多信息,请参阅http://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html

    【讨论】:

    • 我最近在 org-mode 导出中遇到了这个问题,因为我不得不通过损坏+拙劣的升级来全新安装 Ubuntu 12.10。这已经以最小的麻烦解决了现在的问题
    • 另请阅读C-h i g (emacs) Package Installation RET开头的“加载init文件后自动加载包的原因是用户选项只有在加载init文件后才会收到他们的自定义值,包括影响打包系统的用户选项。”
    • 您可以使用after-init-hook 在正常的包初始化完成后评估自定义代码。例如:(add-hook 'after-init-hook 'my-after-init-hook) (defun my-after-init-hook () ...)
    【解决方案3】:

    添加一个文件,而不是目录,使用touch ~/.emacs.d/elpa/archives/-pkg 为我解决了这个问题。

    【讨论】:

      【解决方案4】:

      我认为如果您在以下位置手动创建目录,它可能会消失:

      c:/Documents and Settings/Carlos/Datos de programa/.emacs.d/elpa/archives/-pkg
      

      【讨论】:

        【解决方案5】:

        在我的例子中,我必须添加这个指令来告诉 emacs 在哪里可以找到所需的文件:

        首先这一行

        (add-to-list 'load-path "~/.emacs.d/")
        

        以及所需的包...

        (require 'package)
        (add-to-list 'package-archives
                     '("marmalade" . "http://marmalade-repo.org/packages/") t)
        (package-initialize)
        
        (when (not package-archive-contents)
          (package-refresh-contents))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-12-08
          • 2017-10-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-27
          相关资源
          最近更新 更多