J'ai eu le même problème et comme je n'ai pas trouvé de réponse, j'espère que cela pourra aider ceux qui ont un problème similaire.
J'utilise flymake avec epylint. En gros, ce que j'ai fait, c'est ajouter un dired-mode-hook qui vérifie si le répertoire dired est un répertoire de paquets python. Si c'est le cas, je l'ajoute au PYTHONPATH. Dans mon cas, je considère qu'un répertoire est un package python s'il contient un fichier nommé "setup.py".
;;;;;;;;;;;;;;;;;
;; PYTHON PATH ;;
;;;;;;;;;;;;;;;;;
(defun python-expand-path ()
"Append a directory to the PYTHONPATH."
(interactive
(let ((string (read-directory-name
"Python package directory: "
nil
'my-history)))
(setenv "PYTHONPATH" (concat (expand-file-name string)
(getenv ":PYTHONPATH"))))))
(defun pythonpath-dired-mode-hook ()
(let ((setup_py (concat default-directory "setup.py"))
(directory (expand-file-name default-directory)))
;; (if (file-exists-p setup_py)
(if (is-python-package-directory directory)
(let ((pythonpath (concat (getenv "PYTHONPATH") ":"
(expand-file-name directory))))
(setenv "PYTHONPATH" pythonpath)
(message (concat "PYTHONPATH=" (getenv "PYTHONPATH")))))))
(defun is-python-package-directory (directory)
(let ((setup_py (concat directory "setup.py")))
(file-exists-p setup_py)))
(add-hook 'dired-mode-hook 'pythonpath-dired-mode-hook)
J'espère que cela vous aidera.