[Pythonmac-SIG] Re: Pythonmac-SIG Digest, Vol 20, Issue 24

Brian Lenihan brian_l at mac.com
Tue Dec 21 13:22:17 CET 2004


> >> 208-186-56-189:/sw/bin jis$ cat /sw/bin/idle2.3
> >> #!/sw/bin/python
>
> Which python is first on your path? IIRC there is a feature in darwin
> that wreaks havoc with the setup code in python that finds the correct
> prefix (and library). This ends up always picking the prefix for the
> first python on the path. Darwinports contains a patch for that. Using
> "#!/usr/bin/env /sw/bin/python" should also work.

The "feature" is that OS X does not include the full path to the 
executable in argv[0].  Using #!/usr/bin/env /path/to/python helps.  
Especially in the really annoying case where command line scripts work, 
but scripts launched from applications don't.

Which reminds me, both pyobjc's and py2app's bdist_mpkg also could be 
tweaked so
preflight shell scripts won't fail to run on some systems:

--- pyobjc_mpkg.py      (revision 1287)
+++ pyobjc_mpkg.py      (working copy)
@@ -13,7 +13,7 @@
  from bdist_mpkg import tools

  JUNK = set(['.DS_Store', '.gdb_history', 'build', 'dist', 
'NonFunctional'])
-JUNK_EXTS = set(['.pbxuser', '.pyc', '.pyo'])
+JUNK_EXTS = set(['.pbxuser', '.pyc', '.pyo', '.swp'])
  def skipjunk(fn, junk=JUNK, junk_exts=JUNK_EXTS):
      if not skipscm(fn):
          return False
@@ -23,7 +23,8 @@
          return False
      return True

-PREFLIGHT_RM = """#!/usr/bin/env python
+PREFLIGHT_RM = """\
+#!/usr/bin/env %(sys_executable_path)s
  import shutil, os
  for fn in %(files)r:
      if os.path.isdir(fn):
@@ -31,6 +32,7 @@
      elif os.path.exists(fn):
          os.unlink(fn)
  """
+
  def run_setup(*args, **kwargs):
      import distutils.core
      d = {
@@ -45,10 +47,10 @@
          for k,v in d.iteritems():
              setattr(distutils.core, k, v)

-
  def write_preflight_rm(path, files):
      fobj = file(path, 'w')
-    fobj.write(PREFLIGHT_RM % dict(files=map(os.path.normpath, files)))
+    fobj.write(PREFLIGHT_RM % dict(sys_executable_path=sys.executable,
+                                   files=map(os.path.normpath, files)))
      fobj.close()
      os.chmod(path, 0775)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2359 bytes
Desc: not available
Url : http://mail.python.org/pipermail/pythonmac-sig/attachments/20041221/0f433e0d/smime.bin


More information about the Pythonmac-SIG mailing list