Generating .pyc/.pyo from a make file

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Tim Daneliuk

    #1

    Generating .pyc/.pyo from a make file

    I use a makefile to create distribution tarballs of freestanding Python
    programs and their documentation. I cannot seem to find the right
    command line option to just generate a pyc/pyo file from the program
    and then exit. If I use 'python -OOOO -c"import myprog"' it creates
    the pyo file, but myprog starts up and keeps running.

    IOW, I need a batch method for generating compiled python. I know it
    exists, but I can't find it for some reason ...

    TIA,
    --
    ----------------------------------------------------------------------------
    Tim Daneliuk tundra@tundrawa re.com
    PGP Key: http://www.tundraware.com/PGP/

  • Roland Heiber

    #2
    Re: Generating .pyc/.pyo from a make file

    Tim Daneliuk wrote:[color=blue]
    > I use a makefile to create distribution tarballs of freestanding Python
    > programs and their documentation. I cannot seem to find the right
    > command line option to just generate a pyc/pyo file from the program
    > and then exit. If I use 'python -OOOO -c"import myprog"' it creates
    > the pyo file, but myprog starts up and keeps running.
    >
    > IOW, I need a batch method for generating compiled python. I know it
    > exists, but I can't find it for some reason ...
    >
    > TIA,[/color]
    Hi,

    take a look at http://docs.python.org/lib/module-compileall.html

    HtH, Roland

    Comment

    • Tim Daneliuk

      #3
      Re: Generating .pyc/.pyo from a make file

      Roland Heiber wrote:
      [color=blue]
      > Tim Daneliuk wrote:
      >[color=green]
      >> I use a makefile to create distribution tarballs of freestanding Python
      >> programs and their documentation. I cannot seem to find the right
      >> command line option to just generate a pyc/pyo file from the program
      >> and then exit. If I use 'python -OOOO -c"import myprog"' it creates
      >> the pyo file, but myprog starts up and keeps running.
      >>
      >> IOW, I need a batch method for generating compiled python. I know it
      >> exists, but I can't find it for some reason ...
      >>
      >> TIA,[/color]
      >
      > Hi,
      >
      > take a look at http://docs.python.org/lib/module-compileall.html
      >
      > HtH, Roland[/color]

      It does - thanks. One more question: Are pyc and pyo file portable
      across operating systems? I suspect not since I generated a pyo
      on a FreeBSD machine that will not run on a Win32 machine. I was
      under the impression that "compiled" meant optimized byte code that
      was portable across implementations , but it looks to not be the case...

      --
      ----------------------------------------------------------------------------
      Tim Daneliuk tundra@tundrawa re.com
      PGP Key: http://www.tundraware.com/PGP/

      Comment

      • Roland Heiber

        #4
        Re: Generating .pyc/.pyo from a make file

        Tim Daneliuk wrote:[color=blue]
        > It does - thanks. One more question: Are pyc and pyo file portable
        > across operating systems? I suspect not since I generated a pyo
        > on a FreeBSD machine that will not run on a Win32 machine. I was
        > under the impression that "compiled" meant optimized byte code that
        > was portable across implementations , but it looks to not be the case...
        >[/color]

        Hi,

        ..pyc's should be, cause it's standard python-bytecode, if you use
        massive optimizations it depends not on the os but on the underlying
        cpu/architecture ...

        So long, Roland

        Comment

        • Steve Holden

          #5
          Re: Generating .pyc/.pyo from a make file

          Roland Heiber wrote:
          [color=blue]
          > Tim Daneliuk wrote:
          >[color=green]
          >> It does - thanks. One more question: Are pyc and pyo file portable
          >> across operating systems? I suspect not since I generated a pyo
          >> on a FreeBSD machine that will not run on a Win32 machine. I was
          >> under the impression that "compiled" meant optimized byte code that
          >> was portable across implementations , but it looks to not be the case...
          >>[/color]
          >
          > Hi,
          >
          > ..pyc's should be, cause it's standard python-bytecode, if you use
          > massive optimizations it depends not on the os but on the underlying
          > cpu/architecture ...
          >
          > So long, Roland[/color]

          You probably tried to use a bytecode file from *one* version of Python
          with an interpreter of another version. Python actually checks the first
          four bytes of the .pyc file for a compatible "magic number" before
          accepting the file for execution.

          regards
          Steve
          --
          Meet the Python developers and your c.l.py favorites March 23-25
          Come to PyCon DC 2005 http://www.python.org/pycon/2005/
          Steve Holden http://www.holdenweb.com/

          Comment

          • Tim Daneliuk

            #6
            Re: Generating .pyc/.pyo from a make file

            Steve Holden wrote:
            [color=blue]
            > Roland Heiber wrote:
            >[color=green]
            >> Tim Daneliuk wrote:
            >>[color=darkred]
            >>> It does - thanks. One more question: Are pyc and pyo file portable
            >>> across operating systems? I suspect not since I generated a pyo
            >>> on a FreeBSD machine that will not run on a Win32 machine. I was
            >>> under the impression that "compiled" meant optimized byte code that
            >>> was portable across implementations , but it looks to not be the case...
            >>>[/color]
            >>
            >> Hi,
            >>
            >> ..pyc's should be, cause it's standard python-bytecode, if you use
            >> massive optimizations it depends not on the os but on the underlying
            >> cpu/architecture ...
            >>
            >> So long, Roland[/color]
            >
            >
            > You probably tried to use a bytecode file from *one* version of Python
            > with an interpreter of another version. Python actually checks the first
            > four bytes of the .pyc file for a compatible "magic number" before
            > accepting the file for execution.
            >
            > regards
            > Steve[/color]

            Aha! Exactly ... and that makes perfect sense too. D'oh! I guess a better
            distribution strategy would be to have the installation program generate the pyo
            file at installation time...

            Thanks -

            --
            ----------------------------------------------------------------------------
            Tim Daneliuk tundra@tundrawa re.com
            PGP Key: http://www.tundraware.com/PGP/

            Comment

            • Steve Holden

              #7
              Re: Generating .pyc/.pyo from a make file

              Tim Daneliuk wrote:
              [color=blue]
              > Steve Holden wrote:
              >[color=green]
              >> Roland Heiber wrote:
              >>[color=darkred]
              >>> Tim Daneliuk wrote:
              >>>
              >>>> It does - thanks. One more question: Are pyc and pyo file portable
              >>>> across operating systems? I suspect not since I generated a pyo
              >>>> on a FreeBSD machine that will not run on a Win32 machine. I was
              >>>> under the impression that "compiled" meant optimized byte code that
              >>>> was portable across implementations , but it looks to not be the case...
              >>>>
              >>>
              >>> Hi,
              >>>
              >>> ..pyc's should be, cause it's standard python-bytecode, if you use
              >>> massive optimizations it depends not on the os but on the underlying
              >>> cpu/architecture ...
              >>>
              >>> So long, Roland[/color]
              >>
              >>
              >>
              >> You probably tried to use a bytecode file from *one* version of Python
              >> with an interpreter of another version. Python actually checks the
              >> first four bytes of the .pyc file for a compatible "magic number"
              >> before accepting the file for execution.
              >>
              >> regards
              >> Steve[/color]
              >
              >
              > Aha! Exactly ... and that makes perfect sense too. D'oh! I guess a
              > better
              > distribution strategy would be to have the installation program generate
              > the pyo
              > file at installation time...
              >
              > Thanks -
              >[/color]
              That's what most sensible distributions do.

              regards
              Steve
              --
              Meet the Python developers and your c.l.py favorites March 23-25
              Come to PyCon DC 2005 http://www.pycon.org/
              Steve Holden http://www.holdenweb.com/

              Comment

              • vincent wehren

                #8
                Re: Generating .pyc/.pyo from a make file

                Tim Daneliuk wrote:[color=blue]
                > Steve Holden wrote:
                >[color=green]
                >> Roland Heiber wrote:
                >>[color=darkred]
                >>> Tim Daneliuk wrote:
                >>>[/color][/color]
                > Aha! Exactly ... and that makes perfect sense too. D'oh! I guess a
                > better
                > distribution strategy would be to have the installation program generate
                > the pyo
                > file at installation time...
                >
                > Thanks -[/color]

                Also, the *.py? files contain the full pathname of the *.py they have
                been compiled from. Copying them to other path locations will give you
                the wrong __file___ information in tracebacks.

                --
                Vincent Wehren

                Comment

                • Roland Heiber

                  #9
                  Re: Generating .pyc/.pyo from a make file

                  Roland Heiber wrote:[color=blue]
                  > Tim Daneliuk wrote:[color=green]
                  >> under the impression that "compiled" meant optimized byte code that[/color][/color]

                  You where right, i was totally mislead by "optimized" ... ;)

                  Greetings, Roland

                  Comment

                  Working...