In batch mode, emacs doesn't load installed packages, although the doc implies that it should. If you want to eval forms that require packages, you have to call (package-initialize) explicitly. For instance, from a shell: % emacs -batch -eval '(progn (message "%s" package-directory-list))' Symbol's value as variable is void: package-directory-list % emacs -batch -eval '(progn (package-initialize) (message "%s" package-directory-list))' (c:/emacs/emacs/share/emacs/24.4/site-lisp/elpa c:/emacs/emacs/share/emacs/site-lisp/elpa) Or, since I have the 'dash' package installed in my ~/.emacs.d/elpa: % emacs -batch -eval "(progn (require 'dash))" Cannot open load file: no such file or directory, dash % emacs -batch -eval "(progn (package-initialize) (require 'dash))" % The documentation at http://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html is not totally clear on this, but it implies that packages should be loaded. In GNU Emacs 24.4.1 (i686-pc-mingw32) of 2014-10-24 on LEG570 Windowing system distributor `Microsoft Corp.', version 6.1.7601 Configured using: `configure --prefix=/c/usr' Important settings: value of $LANG: ENU locale-coding-system: cp1252 Major mode: Apropos -- Gary