A bit more on this. I think that some extra expand-file-name calls are needed -- see diff below.
Also, if the user (like me) chooses IPython as the default interpreter by customizing py-shell, then pymacs tries to start IPython rather than python or jython is its inferior process. This is done by setting the PYMACS_PYTHON environment variable with py-choose-shell. For the time being, I've just specified "python" instead of calling py-choose-shell; I never use jython and I pymacs never wants Ipython.
Unfortunately for me, pymacs doesn't start cleanly even when I make sure that python is the inferior shell. In the *Pymacs* buffer I get:
----------------------------------------------------------
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named Pymacs.pymacs
Process pymacs exited abnormally with code 1
-----------------------------------------------------------
This seems to be because the "standard" pymacs is a package, probably located in .../lib/pythonX.Y/site-packages, but with the automatic loading from python-mode.el it's not in a package and the py-install-directory is not in sys.path. I'm not sure of the best way to tell the inferior Python where to find pymacs -- one possibility would be to mess with PYTHONPATH, but that might be messy if the user has also set it; another might be to add py-install-directory directly to sys.path in pymacs.el. Hardcoding my .../python-mode/pymacs directory (it has to be the full path) and changing Pymacs to pymacs in a couple of places (see patch) helps, but it looks as if pymacs.py still differs from Pymacs enough to break it. Here's what happens in *Pymacs* with the patched code:
-------------------------------------------------------------
['', '/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg', '/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/distribute-0.6.21-py2.7.egg', '/System/Library/Frameworks/Python.framework/Versions/src/scipy', '/System/Library/Frameworks/Python.framework/Versions/src/matplotlib/lib', '/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages', '/Library/Python/2.7/site-packages', '/Users/reverson/Emacs/el/python-mode/pymacs']
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/Users/reverson/Emacs/el/python-mode/pymacs/pymacs.py", line 88, in main
from pymacs import __version__
ImportError: cannot import name __version__
Also, with py-load-pymacs-p non-nil whenever I open a new .py file, pycomplete.el is also opened and the pycomplete.el buffer is presented instead of the actual file buffer. I see that pycomplete.el should be loaded, evaluated and the buffer killed, but it is not being killed for me -- perhaps because of the import failure above?
I'm afraid I haven't really got time to investigate this further at the moment and am just switching off pymacs by default. Let me know if you want me to try anything.
On 9 Jan 2012, at 13:10, Launchpad Bug Tracker wrote:
> ** Branch linked: lp:python-mode
>
> ** Branch linked: lp:~a-roehler/python-mode/XEmacs-compat-test
>
> ** Branch linked: lp:python-mode/components-python-mode
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/913289
>
> Title:
> py-load-pymacs sets load path incorrectly
>
> Status in An Emacs mode for editing Python code:
> Fix Committed
>
> Bug description:
>
> So far as I can tell py-load-pymacs adds .../pymacs/pymacs.el to the load-path, but should add .../pymacs. Also I suggest that py-install-directory should by expanded with expand-file-name so that users can put things like:
>
> (add-to-list 'load-path "~/el/python-mode/")
> (setq py-install-directory "~/el/python-mode/")
>
> in .emacs
>
> Here's a slightly modified function to do these:
>
> (defun py-load-pymacs ()
> "Load Pymacs as delivered with python-mode.el.
>
> Pymacs has been written by François Pinard and many others.
> See original source: http://pymacs.progiciels-bpi.ca"
> (interactive)
> (if (or (not (boundp 'py-install-directory)) (not (stringp py-install-directory)))
> (error "`py-install-directory' not set, see INSTALL")
> (load (expand-file-name (concat py-install-directory "/pymacs/pymacs.el")) nil t)
> (add-to-list 'load-path (expand-file-name (concat py-install-directory "/pymacs/")))
> (setenv "PYMACS_PYTHON" "python2.7")
> (autoload 'pymacs-apply "pymacs")
> (autoload 'pymacs-call "pymacs")
> (autoload 'pymacs-eval "pymacs")
> (autoload 'pymacs-exec "pymacs")
> (autoload 'pymacs-load "pymacs")
> (require 'pymacs)))
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/python-mode/+bug/913289/+subscriptions
Hi Andreas,
A bit more on this. I think that some extra expand-file-name calls are needed -- see diff below.
Also, if the user (like me) chooses IPython as the default interpreter by customizing py-shell, then pymacs tries to start IPython rather than python or jython is its inferior process. This is done by setting the PYMACS_PYTHON environment variable with py-choose-shell. For the time being, I've just specified "python" instead of calling py-choose-shell; I never use jython and I pymacs never wants Ipython.
Unfortunately for me, pymacs doesn't start cleanly even when I make sure that python is the inferior shell. In the *Pymacs* buffer I get:
------- ------- ------- ------- ------- ------- ------- ------- --
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named Pymacs.pymacs
Process pymacs exited abnormally with code 1 ------- ------- ------- ------- ------- ------- ------- ---
-------
This seems to be because the "standard" pymacs is a package, probably located in .../lib/ pythonX. Y/site- packages, but with the automatic loading from python-mode.el it's not in a package and the py-install- directory is not in sys.path. I'm not sure of the best way to tell the inferior Python where to find pymacs -- one possibility would be to mess with PYTHONPATH, but that might be messy if the user has also set it; another might be to add py-install- directory directly to sys.path in pymacs.el. Hardcoding my .../python- mode/pymacs directory (it has to be the full path) and changing Pymacs to pymacs in a couple of places (see patch) helps, but it looks as if pymacs.py still differs from Pymacs enough to break it. Here's what happens in *Pymacs* with the patched code:
------- ------- ------- ------- ------- ------- ------- ------- ----- Cellar/ python/ 2.7.2/Framework s/Python. framework/ Versions/ 2.7/lib/ python2. 7/site- packages/ pip-1.0. 2-py2.7. egg', '/usr/local/ Cellar/ python/ 2.7.2/Framework s/Python. framework/ Versions/ 2.7/lib/ python2. 7/site- packages/ distribute- 0.6.21- py2.7.egg' , '/System/ Library/ Frameworks/ Python. framework/ Versions/ src/scipy' , '/System/ Library/ Frameworks/ Python. framework/ Versions/ src/matplotlib/ lib', '/usr/local/ Cellar/ python/ 2.7.2/Framework s/Python. framework/ Versions/ 2.7/lib/ python27. zip', '/usr/local/ Cellar/ python/ 2.7.2/Framework s/Python. framework/ Versions/ 2.7/lib/ python2. 7', '/usr/local/ Cellar/ python/ 2.7.2/Framework s/Python. framework/ Versions/ 2.7/lib/ python2. 7/plat- darwin' , '/usr/local/ Cellar/ python/ 2.7.2/Framework s/Python. framework/ Versions/ 2.7/lib/ python2. 7/plat- mac', '/usr/local/ Cellar/ python/ 2.7.2/Framework s/Python. framework/ Versions/ 2.7/lib/ python2. 7/plat- mac/lib- scriptpackages' , '/usr/local/ Cellar/ python/ 2.7.2/Framework s/Python. framework/ Versions/ 2.7/lib/ python2. 7/lib-tk' , '/usr/local/ Cellar/ python/ 2.7.2/Framework s/Python. framework/ Versions/ 2.7/lib/ python2. 7/lib-old' , '/usr/local/ Cellar/ python/ 2.7.2/Framework s/Python. framework/ Versions/ 2.7/lib/ python2. 7/lib-dynload' , '/usr/local/ Cellar/ python/ 2.7.2/Framework s/Python. framework/ Versions/ 2.7/lib/ python2. 7/site- packages' , '/Library/ Python/ 2.7/site- packages' , '/Users/ reverson/ Emacs/el/ python- mode/pymacs' ] reverson/ Emacs/el/ python- mode/pymacs/ pymacs. py", line 88, in main
['', '/usr/local/
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/Users/
from pymacs import __version__
ImportError: cannot import name __version__
Process pymacs exited abnormally with code 1
------- ------- ------- ------- ------- ------- ------- ------- -----
Also, with py-load-pymacs-p non-nil whenever I open a new .py file, pycomplete.el is also opened and the pycomplete.el buffer is presented instead of the actual file buffer. I see that pycomplete.el should be loaded, evaluated and the buffer killed, but it is not being killed for me -- perhaps because of the import failure above?
I'm afraid I haven't really got time to investigate this further at the moment and am just switching off pymacs by default. Let me know if you want me to try anything.
Best,
Richard.
ax:Emacs/ el/python- mode/$ bzr log | head ------- ------- ------- ------- ------- ------- ------- ---- /launchpad. net/bugs/ 912919 ------- ------- ------- ------- ------- ------- ------- ---- el/python- mode/$ bzr diff -p1 pymacs. el 2011-10-27 10:14:31 +0000 pymacs. el 2012-01-10 23:40:41 +0000
"python"
python) )
"-c" (concat "import sys;" append( '/Users/ reverson/ Emacs/el/ python- mode/pymacs' );"
" main(*sys. argv[1: ])")
(mapcar 'expand-file-name pymacs- load-path) )))
(pymacs- kill-without- query process)
-------
revno: 774
fixes bug(s): https:/
committer: Andreas Roehler <email address hidden>
branch nick: python-mode
timestamp: Tue 2012-01-10 21:47:06 +0100
message:
defvar py-mode-map python-mode-map, backward compat, lp:912919
-------
revno: 773
ax:Emacs/
=== modified file 'pymacs/pymacs.el'
--- old/pymacs/
+++ new/pymacs/
@@ -506,7 +506,9 @@
- " from Pymacs.pymacs import main;"
+ "sys.path.
+ "print sys.path;"
+ " from pymacs import main;"
=== modified file 'pymacs/pymacs.py' pymacs. py 2011-08-30 14:54:17 +0000 pymacs. py 2012-01-10 23:43:58 +0000
self. inhibit_ quit = True
lisp. _protocol. send('version' , '"%s"' % __version__)
lisp. _protocol. loop()
--- old/pymacs/
+++ new/pymacs/
@@ -85,7 +85,7 @@
# pass
# Start protocol and services.
- from Pymacs import __version__
+ from pymacs import __version__
=== modified file 'python-mode.el' directory) ) (not (stringp py-install- directory) )) directory' not set, see INSTALL") directory "/pymacs")) directory "/pymacs/ pymacs. el") nil t) directory) "/pymacs")) directory) "/pymacs/ pymacs. el") nil t) directory
(add- to-list 'load-path (expand-file-name py-install- directory) )
(add- to-list 'load-path (concat (expand-file-name py-install- directory) "/completion")) directory "/pymacs")) directory) "/pymacs"))
(add- to-list 'load-path (concat (expand-file-name py-install- directory) "/test"))
(add- to-list 'load-path (concat (expand-file-name py-install- directory) "/tools"))) py-install- directory- p toggle- shells (py-choose-shell))) directory "/completion/ pycomplete. el")) directory) "/completion/ pycomplete. el"))
(eval- buffer)
(kill- buffer "pycomplete.el")) python- mode-map (kbd "<tab>")
--- old/python-mode.el 2012-01-10 20:47:06 +0000
+++ new/python-mode.el 2012-01-10 23:23:59 +0000
@@ -7520,9 +7520,10 @@
(interactive)
(if (or (not (boundp 'py-install-
(error "`py-install-
- (add-to-list 'load-path (concat py-install-
- (load (concat py-install-
- (setenv "PYMACS_PYTHON" (py-choose-shell))
+ (add-to-list 'load-path (concat (expand-file-name py-install-
+ (load (concat (expand-file-name py-install-
+;; (setenv "PYMACS_PYTHON" (py-choose-shell))
+ (setenv "PYMACS_PYTHON" "python")
(autoload 'pymacs-apply "pymacs")
(autoload 'pymacs-call "pymacs")
(autoload 'pymacs-eval "pymacs")
@@ -7546,7 +7547,7 @@
(cond (py-install-
- (add-to-list 'load-path (concat py-install-
+ (add-to-list 'load-path (concat (expand-file-name py-install-
((when py-guess-
@@ -7685,7 +7686,7 @@
(py-
;; (py-set-load-path)
(when py-load-pymacs-p (py-load-pymacs)
- (find-file (concat py-install-
+ (find-file (concat (expand-file-name py-install-
(define-key inferior-
On 9 Jan 2012, at 13:10, Launchpad Bug Tracker wrote:
> ** Branch linked: lp:python-mode /bugs.launchpad .net/bugs/ 913289 pymacs. el to the load-path, but should add .../pymacs. Also I suggest that py-install- directory should by expanded with expand-file-name so that users can put things like: mode/") directory "~/el/python- mode/") pymacs. progiciels- bpi.ca" directory) ) (not (stringp py-install- directory) )) directory' not set, see INSTALL") directory "/pymacs/ pymacs. el")) nil t) directory "/pymacs/"))) /bugs.launchpad .net/python- mode/+bug/ 913289/ +subscriptions
>
> ** Branch linked: lp:~a-roehler/python-mode/XEmacs-compat-test
>
> ** Branch linked: lp:python-mode/components-python-mode
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https:/
>
> Title:
> py-load-pymacs sets load path incorrectly
>
> Status in An Emacs mode for editing Python code:
> Fix Committed
>
> Bug description:
>
> So far as I can tell py-load-pymacs adds .../pymacs/
>
> (add-to-list 'load-path "~/el/python-
> (setq py-install-
>
> in .emacs
>
> Here's a slightly modified function to do these:
>
> (defun py-load-pymacs ()
> "Load Pymacs as delivered with python-mode.el.
>
> Pymacs has been written by François Pinard and many others.
> See original source: http://
> (interactive)
> (if (or (not (boundp 'py-install-
> (error "`py-install-
> (load (expand-file-name (concat py-install-
> (add-to-list 'load-path (expand-file-name (concat py-install-
> (setenv "PYMACS_PYTHON" "python2.7")
> (autoload 'pymacs-apply "pymacs")
> (autoload 'pymacs-call "pymacs")
> (autoload 'pymacs-eval "pymacs")
> (autoload 'pymacs-exec "pymacs")
> (autoload 'pymacs-load "pymacs")
> (require 'pymacs)))
>
> To manage notifications about this bug go to:
> https:/