[MacPorts] #41549: python34 installs fails with Image error: /opt/local/bin/2to3 already exists

MacPorts noreply at macports.org
Mon Nov 25 21:51:23 PST 2013


#41549: python34 installs fails with Image error: /opt/local/bin/2to3 already
exists
--------------------+--------------------------------
 Reporter:  nad@…   |      Owner:  macports-tickets@…
     Type:  defect  |     Status:  new
 Priority:  Normal  |  Milestone:
Component:  ports   |    Version:  2.2.1
 Keywords:          |       Port:  python34
--------------------+--------------------------------
 As of Python 3.4.0b1, the Makefile `altintstall` and `install` targets
 have changed somewhat.  In particular, for framework builds, there is now
 a complete set of symlinks created in the prefix bin directory (
 {{{/opt/local/bin}}} for all of the files created in the framework `bin`
 directory.  See http://bugs.python.org/issue19649 for details.  `make
 install` will create files that overlap between Python versions, for
 example, the generic `python3` symlink.  Another case is `2to3` which, I
 believe, exists in all Pythons since 2.6.  The "already exists" error
 occurs when installing `python34` if `python27` is already installed. (I'm
 using a non-standard MacPorts prefix, `/macports`, instead of
 `/opt/local`, and use the `+universal` variant.)


 {{{
 :error:activate org.macports.activate for port python34 returned: Image
 error: /macports/bin/2to3 already exists and does not belong to a
 registered port.  Unable to activate port python34. Use 'port -f activate
 python34' to force the activation.
 }}}

 Here is the set of files to be installed by the `python34` port into the
 `bin` directory:
 {{{
 :info:activate x ./macports/bin/2to3
 :info:activate x ./macports/bin/2to3-3.4
 :info:activate x ./macports/bin/easy_install-3.4
 :info:activate x ./macports/bin/idle3
 :info:activate x ./macports/bin/idle3.4
 :info:activate x ./macports/bin/pip3
 :info:activate x ./macports/bin/pip3.4
 :info:activate x ./macports/bin/pydoc3
 :info:activate x ./macports/bin/pydoc3.4
 :info:activate x ./macports/bin/python3
 :info:activate x ./macports/bin/python3-32
 :info:activate x ./macports/bin/python3-config
 :info:activate x ./macports/bin/python3.4
 :info:activate x ./macports/bin/python3.4-32
 :info:activate x ./macports/bin/python3.4-config
 :info:activate x ./macports/bin/python3.4m
 :info:activate x ./macports/bin/python3.4m-config
 :info:activate x ./macports/bin/pyvenv
 :info:activate x ./macports/bin/pyvenv-3.4

 }}}

 I currently have `python27` and `python33` installed.  Here is what the
 `/macports/bin` directory looks like:

 {{{
 # ls -l /macports/bin/pytho*
 lrwxr-xr-x  1 root  admin  23 Nov 25 21:06 /macports/bin/python@ ->
 /macports/bin/python2.7
 lrwxr-xr-x  1 root  admin  30 Nov 25 21:06 /macports/bin/python-config@ ->
 /macports/bin/python2.7-config
 lrwxr-xr-x  1 root  admin  72 Nov 12 13:58 /macports/bin/python2.7@ ->
 /macports/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
 lrwxr-xr-x  1 root  admin  79 Nov 12 13:58 /macports/bin/python2.7-config@
 ->
 /macports/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config
 lrwxr-xr-x  1 root  admin  23 Aug 23 13:45 /macports/bin/python3@ ->
 /macports/bin/python3.3
 lrwxr-xr-x  1 root  admin  72 Nov 25 20:49 /macports/bin/python3.3@ ->
 /macports/Library/Frameworks/Python.framework/Versions/3.3/bin/python3.3
 lrwxr-xr-x  1 root  admin  75 Nov 25 20:49 /macports/bin/python3.3-32@ ->
 /macports/Library/Frameworks/Python.framework/Versions/3.3/bin/python3.3-32
 lrwxr-xr-x  1 root  admin  79 Nov 25 20:49 /macports/bin/python3.3-config@
 ->
 /macports/Library/Frameworks/Python.framework/Versions/3.3/bin/python3.3-config
 lrwxr-xr-x  1 root  admin  24 Nov 25 21:06 /macports/bin/pythonw@ ->
 /macports/bin/pythonw2.7
 lrwxr-xr-x  1 root  admin  73 Nov 12 13:58 /macports/bin/pythonw2.7@ ->
 /macports/Library/Frameworks/Python.framework/Versions/2.7/bin/pythonw2.7
 lrwxr-xr-x  1 root  admin  73 Nov 25 20:49 /macports/bin/pythonw3.3@ ->
 /macports/Library/Frameworks/Python.framework/Versions/3.3/bin/pythonw3.3
 lrwxr-xr-x  1 root  admin  76 Nov 25 20:49 /macports/bin/pythonw3.3-32@ ->
 /macports/Library/Frameworks/Python.framework/Versions/3.3/bin/pythonw3.3-32
 # ls -l /macports/bin/2to*
 lrwxr-xr-x  1 root  admin  22 Nov 25 21:06 /macports/bin/2to3@ ->
 /macports/bin/2to3-2.7
 lrwxr-xr-x  1 root  admin  71 Nov 12 13:58 /macports/bin/2to3-2.7@ ->
 /macports/Library/Frameworks/Python.framework/Versions/2.7/bin/2to3-2.7
 lrwxr-xr-x  1 root  admin  71 Nov 25 20:49 /macports/bin/2to3-3.3@ ->
 /macports/Library/Frameworks/Python.framework/Versions/3.3/bin/2to3-3.3
 }}}

 Along with the `2to3` conflict, there will likely be conflicts between the
 `python33` and `python34` versions of the `3` links.  Without thinking too
 much about it, I think the right approach would likely be to install with
 `make altinstall` rather then `make install` and then provide `port select
 python3` options and just special case `2to3`, perhaps giving preference
 to the Python 3.x version which should be newer.

 Also, note that Python 3.4.0b1 implements PEP 453 which by default
 installs a version of `pip` and its current dependency `setuptools`, which
 now show up in the bin directories and will conflict with the
 `py34-setuptools` port and `py34-pip` (when created).  See
 http://bugs.python.org/issue19553 for more details.

-- 
Ticket URL: <https://trac.macports.org/ticket/41549>
MacPorts <http://www.macports.org/>
Ports system for OS X


More information about the macports-tickets mailing list