Re: Problems building a binary from cpython that can be installed in /Users/{USER}/Library
Christopher Barker <[email protected]> Sun, 14 Nov 2021 09:50:14 -0800
| Newsgroups | gmane.comp.python.apple |
|---|---|
| Message-ID | <CALn7ch96j96rjmiB31mXgajKH=VHsVAyiBh28nU=pcqOw_3mYw@mail.gmail.com> |
--===============4911205781155904835== Content-Type: multipart/alternative; boundary="00000000000001e57505d0c35409" --00000000000001e57505d0c35409 Content-Type: text/plain; charset="UTF-8" I would very highly recommend that you not reinvent the wheel here. But if you really don't like the way Py2App or PyInstaller does it, then I wouldn't try to build the entire "normal" mac distribution anyway, and start at a lower level. Maybe look at homebrew for ideas? BTW -- there's a third option: conda and "conda constructor" -- might be worth a look. -CHB On Sun, Nov 14, 2021 at 7:57 AM Barry Scott <[email protected]> wrote: > > > On 10 Nov 2021, at 20:28, Paul Romer <[email protected]> wrote: > > I am new to this sig. I hope it is appropriate to pose the following > detailed question to its members. Let me know if I have misunderstood. > > I'll provide a bit of background, specify the steps I took, then describe > the two issues I'm facing on which I would welcome advice. > > ===================================================================== > > *Background: * > I am trying to create a self-contained Python application that a user > could download and run on MacOS that does not have Python 3 installed. I > am aware that PyInstaller and py2app are alternative paths for creating > self-contained apps and am pursuing them in parallel. > > The issue I want to describe here arose as part of experiments with the > process for creating a binary for a recent version of Python (3.9.8) that > can be installed under the user's home directory. > > /Users/{USER}/Library. > > According to the information in the cpython repository, it seems that it > should be possible to build an installer for a full version of Python that > can be installed someplace on a Mac other than the default location: > /Library. In particular, one should be able to do this using > > build-installer.py > > in the > > Mac/BuildScript > > directory. > > *=====================================================================* > > *Steps I Took:* > > In the cpython directory I ran: > > > ./configure --enable-framework=/Users/{USER}/Library/Frameworks \ > --enable-optimizations > > > Why do you think you need to build CPYTHON at all? > > I use py3app with the python.org downloaded versions of python. > > > I confirmed that the Makefile included the line: > > CONFIG_ARGS= '--enable-framework=/Users/{USER}/Library/Frameworks' > '--enable-optimizations' > > (I also tried replacing {USER} with the actual user on my system, 'admin'. > This yielded the same results.) > > I put the external files OpenSSL, tcl/tck, ... (details below) that are > required into the > > .../Universal/other-sources > > directory. I deleted my install of Python3.9 and backed-up and deleted all > the files from > > /usr/local/bin > > Then from > > /Mac/BuildScript > > I ran > > > python3 build-installer.py \ > --universal-archs=intel-64 \ > --dep-target=11 > > Along the way, there were several warnings, but no errors. The end result > is a dmg file: > > python-3.9.8+-macos12-2021-11-10.dmg > > ===================================================================== > > *Issues:* > > 1. I am not sure how to convert the dmg into a "macOS flat installer > package" and would welcome any advice on this point. > > > > You do not need to. All the user needs to do it drag the <yourapp>.app > folder into (typically) /Applications. > > > 2. But in any case, I do not think that an installer based on this dmg > will allow an install in the Library of the user. When I inspect the dmg > file, I find that the post-install scripts include references to the usual > file location in /Library. For example, the script that runs after > installing the framework has the lines: > > PYVER="3.9" > FWK="/Library/Frameworks/Python.framework/Versions/3.9" > > > What post-install script? That's not something that py2app does. > > > The script that runs after installing the files for pip has the lines: > > PYVER="3.9" > PYMAJOR="3" > FWK="/Library/Frameworks/Python.framework/Versions/${PYVER}" > RELFWKBIN="../../..${FWK}/bin" > > This suggests that I have misunderstood the instructions. So I would > appreciate any advice on how to succeed on this path, or suggestions about > alternative paths that might work. In particular, the alternative that > might be feasible would be to use the work from > > https://github.com/codrsquad/portable-python > > This is a recent project, not the one with the same name that was > abandoned that you'll find here: > > https://portablepython.com/ > > > For Barry's Emacs I do 2 steps. > > 1. Build the .app bundle. > 2. Build .dmg that has a bunch of files including the .app bundle. > > There may be a bit too much complexity but have look at how I build the > .app bundle in > > https://github.com/barry-scott/BarrysEmacs/blob/master/Editor/PyQtBEmacs/build-macosx.sh > <https://github.com/barry-scott/BarrysEmacs/blob/master/Editor/PyQtBEmacs/macosx.mak> > and > > https://github.com/barry-scott/BarrysEmacs/blob/master/Editor/PyQtBEmacs/brand.setup-macosx.py > > I'm using PyQt not Tk. > > Barry > > > > > Thanks for reading through all this! > > > ===================================================================== > > PS: Contents of my .../Universal/other-sources directory: > > -rw-r--r-- 1 admin staff 367573 Nov 10 00:53 > ncurses-5.9-20120616-patch.sh.bz2 > -rw-r--r-- 1 admin staff 2826473 Nov 10 00:53 ncurses-5.9.tar.gz > -rw-r--r-- 1 admin staff 9834044 Nov 9 22:19 openssl-1.1.1l.tar.gz > -rw-rw-rw-@ 1 admin staff 2956627 Nov 10 01:06 > sqlite-autoconf-3350500.tar.gz > -rw-rw-rw-@ 1 admin staff 10259009 Nov 9 22:55 tcl8.6.11-src.tar.gz > -rw-rw-rw-@ 1 admin staff 4496914 Nov 10 00:37 tk8.6.11-src.tar.gz > -rw-rw-rw-@ 1 admin staff 1490665 Nov 10 00:45 xz-5.2.3.tar.gz > > ===================================================================== > > > Paul Romer > [email protected] | paulromer.net | @paulromer > <https://twitter.com/paulmromer?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor> > > _______________________________________________ > Pythonmac-SIG maillist - [email protected] > https://mail.python.org/mailman/listinfo/pythonmac-sig > unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG > > > _______________________________________________ > Pythonmac-SIG maillist - [email protected] > https://mail.python.org/mailman/listinfo/pythonmac-sig > unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG > -- Christopher Barker, PhD (Chris) Python Language Consulting - Teaching - Scientific Software Development - Desktop GUI and Web Development - wxPython, numpy, scipy, Cython --00000000000001e57505d0c35409 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">I would very highly recommend that you not reinvent the wh= eel here.<div><br></div><div>But if you really don't=C2=A0like the way = Py2App or PyInstaller does it, then I wouldn't try to build the entire = "normal" mac distribution anyway, and start at a lower level. May= be look at homebrew for ideas?</div><div><br></div><div>BTW -- there's = a third option: conda and "conda constructor" -- might be worth a= look.</div><div><br></div><div>-CHB</div><div><br></div><div><br></div><di= v><br></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"= gmail_attr">On Sun, Nov 14, 2021 at 7:57 AM Barry Scott <<a href=3D"mail= to:[email protected]">[email protected]</a>> wrote:<br></div><= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex"><div style=3D"overflow-wra= p: break-word;"><br><div><br><blockquote type=3D"cite"><div>On 10 Nov 2021,= at 20:28, Paul Romer <<a href=3D"mailto:[email protected]" target=3D"_= blank">[email protected]</a>> wrote:</div><br><div><div dir=3D"ltr"><di= v><span style=3D"font-family:monospace">I am new to this sig. I hope it is = appropriate to pose the following detailed question to its members.=C2=A0</= span><span style=3D"font-family:monospace">Let me know if I have misunderst= ood. <br></span></div><div><span style=3D"font-family:monospace"><br></span= ></div><div><span style=3D"font-family:monospace">I'll provide a bit of= background, specify the steps I took, then describe the two issues I'm= facing on which I would welcome advice. <br></span></div><div><span style= =3D"font-family:monospace"><br></span></div><div><span style=3D"font-family= :monospace"><span style=3D"font-family:monospace"><span style=3D"font-famil= y:monospace">=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</s= pan></span></span></div><div><span style=3D"font-family:monospace"><span st= yle=3D"font-family:monospace"><span style=3D"font-family:monospace"><br></s= pan></span></span></div><div><span style=3D"font-family:monospace"><b>Backg= round: </b></span><span style=3D"font-family:monospace"><br></span></div><d= iv><span style=3D"font-family:monospace">I am trying to create a self-conta= ined Python application that a user could download and run on MacOS that do= es not have Python 3 installed. <span style=3D"font-family:monospace">I am = aware that PyInstaller and py2app are alternative paths for creating self-c= ontained apps and am pursuing them in parallel. <br></span></span></div><di= v><span style=3D"font-family:monospace"><br></span></div><div><span style= =3D"font-family:monospace">The issue I want to describe here arose as part = of experiments with the process for creating a binary for a recent version = of Python (3.9.8) that can be installed under the user's home directory= . <br></span></div><div><span style=3D"font-family:monospace"><br></span></= div><div style=3D"margin-left:40px"><span style=3D"font-family:monospace">/= Users/{USER}/Library. <br></span></div><div><span style=3D"font-family:mono= space"><br></span></div><div><span style=3D"font-family:monospace">Accordin= g to the information in the cpython repository, it seems that it should be = possible to build an installer for a full version of Python that can be ins= talled someplace on a Mac other than the default location: /Library. In par= ticular, one should be able to do this using <br></span></div><div><span st= yle=3D"font-family:monospace"><br></span></div><div style=3D"margin-left:40= px"><span style=3D"font-family:monospace">build-installer.py <br></span></d= iv><div><span style=3D"font-family:monospace"><br></span></div><div><span s= tyle=3D"font-family:monospace">in the<br></span></div><div><span style=3D"f= ont-family:monospace"><br></span></div><div style=3D"margin-left:40px"><spa= n style=3D"font-family:monospace">Mac/BuildScript <br></span></div><div sty= le=3D"margin-left:40px"><span style=3D"font-family:monospace"><br></span></= div><div><span style=3D"font-family:monospace">directory. <br></span></div>= <div><span style=3D"font-family:monospace"><b><br></b></span></div><div><sp= an style=3D"font-family:monospace"><b><span style=3D"font-family:monospace"= ><span style=3D"font-family:monospace">=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D</span></span></b></span></div><div><span style=3D"fon= t-family:monospace"><b><span style=3D"font-family:monospace"><span style=3D= "font-family:monospace"><br></span></span></b></span></div><div><span style= =3D"font-family:monospace"><b>Steps I Took:</b></span></div><div><span styl= e=3D"font-family:monospace"><br></span></div><div><span style=3D"font-famil= y:monospace">In the cpython directory I ran: <br></span></div><div><span st= yle=3D"font-family:monospace"><br></span></div><div style=3D"margin-left:40= px"><span style=3D"font-family:monospace">> ./configure --enable-framewo= rk=3D/Users/{USER}/Library/Frameworks \</span></div><div style=3D"margin-le= ft:40px"><span style=3D"font-family:monospace">--enable-optimizations<br></= span></div></div></div></blockquote><div><br></div>Why do you think you nee= d to build CPYTHON at all?</div><div><br></div><div>I use py3app with the <= a href=3D"http://python.org" target=3D"_blank">python.org</a>=C2=A0download= ed versions of python.</div><div><br><blockquote type=3D"cite"><div><div di= r=3D"ltr"><div><div><div><span style=3D"font-family:monospace"><br></span><= /div><div><span style=3D"font-family:monospace">I confirmed that the Makefi= le included the line: <br></span></div><div><span style=3D"font-family:mono= space"><br></span></div><div><div style=3D"background-color:rgb(255,255,255= );font-weight:normal;font-size:12px;line-height:18px;white-space:pre-wrap">= <div style=3D"margin-left:40px"><span style=3D"font-family:monospace"><span= >CONFIG_ARGS=3D '--enable-framework=3D/Users/{USER}/Library/Framewo= rks' '--enable-optimizations'</span></span></div><span style=3D= "font-family:monospace"><br></span></div><span style=3D"font-family:monospa= ce">(I also tried replacing {USER} with the actual user on my system, '= admin'. This yielded the same results.)=C2=A0 <br></span></div><div><sp= an style=3D"font-family:monospace"><br></span></div><div><span style=3D"fon= t-family:monospace">I put the external files OpenSSL, tcl/tck, ... (details= below) that are required into the <br></span></div><div><span style=3D"fon= t-family:monospace"><br></span></div><div style=3D"margin-left:40px"><span = style=3D"font-family:monospace">.../Universal/other-sources <br></span></di= v><div><span style=3D"font-family:monospace"><br></span></div><div><span st= yle=3D"font-family:monospace">directory. I deleted my install of Python3.9 = and backed-up and deleted all the files from <br></span></div><div><span st= yle=3D"font-family:monospace"><br></span></div><div style=3D"margin-left:40= px"><span style=3D"font-family:monospace">/usr/local/bin <br></span></div><= div><span style=3D"font-family:monospace"><br></span></div><div><span style= =3D"font-family:monospace">Then from <br></span></div><div><span style=3D"f= ont-family:monospace"><br></span></div><div style=3D"margin-left:40px"><spa= n style=3D"font-family:monospace">/Mac/BuildScript <br></span></div><div st= yle=3D"margin-left:40px"><span style=3D"font-family:monospace"><br></span><= /div><span style=3D"font-family:monospace">I ran <br></span></div><div><div= ><span style=3D"font-family:monospace"><br></span></div><div style=3D"margi= n-left:40px"><span style=3D"font-family:monospace">> python3 build-insta= ller.py \<br></span></div><div style=3D"margin-left:40px"><span style=3D"fo= nt-family:monospace">--universal-archs=3Dintel-64 \<br>--dep-target=3D11</s= pan></div><div><span style=3D"font-family:monospace"><br></span></div><div>= <span style=3D"font-family:monospace"><span style=3D"font-family:monospace"= >Along the way, there were several warnings, but no errors. </span>The end = result is a dmg file: <br></span></div><div><span style=3D"font-family:mono= space"><br></span></div><div style=3D"margin-left:40px"><span style=3D"font= -family:monospace">python-3.9.8+-macos12-2021-11-10.dmg</span></div><div><d= iv style=3D"margin-left:40px"><span style=3D"font-family:monospace"><br></s= pan></div><span style=3D"font-family:monospace"><span style=3D"font-family:= monospace"><span style=3D"font-family:monospace">=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D</span></span></span></div><div><span styl= e=3D"font-family:monospace"><br></span></div><div><span style=3D"font-famil= y:monospace"><b>Issues:</b></span></div><div><span style=3D"font-family:mon= ospace"><br></span></div><div><span style=3D"font-family:monospace">1. I am= not sure how to convert the dmg into a "macOS flat installer package&= quot; and would welcome any advice on this point. <br></span></div></div></= div></div></div></blockquote><div><br></div><div><br></div><div>You do not = need to. All the user needs to do it drag the <yourapp>.app folder in= to (typically) /Applications.</div><br><blockquote type=3D"cite"><div><div = dir=3D"ltr"><div><div><div><span style=3D"font-family:monospace"><br></span= ></div><div><span style=3D"font-family:monospace">2. But in any case, I do = not think that an installer based on this dmg will allow an install in the = Library of the user. When I inspect the dmg file, I find that the post-inst= all scripts include references to the usual file location in /Library. For = example, the script that runs after installing the framework has the lines:= <br></span></div><div><span style=3D"font-family:monospace"><br></span></d= iv><div><div style=3D"margin-left:40px"><span style=3D"font-family:monospac= e">PYVER=3D"3.9"<br>FWK=3D"/Library/Frameworks/Python.framew= ork/Versions/3.9"<br></span></div></div></div></div></div></div></bloc= kquote><div><br></div>=C2=A0What post-install script? That's not someth= ing that py2app does.</div><div><br><blockquote type=3D"cite"><div><div dir= =3D"ltr"><div><div><div><span style=3D"font-family:monospace"><br></span></= div><div><span style=3D"font-family:monospace">The script that runs after i= nstalling the files for pip has the lines: <br></span></div><div><span styl= e=3D"font-family:monospace"><br></span></div><div style=3D"margin-left:40px= "><span style=3D"font-family:monospace">PYVER=3D"3.9"<br>PYMAJOR= =3D"3"<br>FWK=3D"/Library/Frameworks/Python.framework/Versio= ns/${PYVER}"<br>RELFWKBIN=3D"../../..${FWK}/bin"</span></div= ><div style=3D"margin-left:40px"><span style=3D"font-family:monospace"><br>= </span></div><span style=3D"font-family:monospace">This suggests that I hav= e misunderstood the instructions. So I would appreciate any advice on how t= o succeed on this path, or suggestions about alternative paths that might w= ork. In particular, the alternative that might be feasible would be to use = the work from <br></span></div><div><span style=3D"font-family:monospace"><= br></span></div><div style=3D"margin-left:40px"><span style=3D"font-family:= monospace"><a href=3D"https://github.com/codrsquad/portable-python" target= =3D"_blank">https://github.com/codrsquad/portable-python</a> </span></div><= div><span style=3D"font-family:monospace"><br></span></div><div><span style= =3D"font-family:monospace">This is a recent project, not the one with the s= ame name that was abandoned that you'll find here:</span></div><div><sp= an style=3D"font-family:monospace"><br></span></div><div style=3D"margin-le= ft:40px"><span style=3D"font-family:monospace"><a href=3D"https://portablep= ython.com/" target=3D"_blank">https://portablepython.com/</a></span></div><= /div></div></div></blockquote><div><br></div><div>For Barry's Emacs I d= o 2 steps.</div><div><br></div><div>1. Build the .app bundle.</div><div>2. = Build .dmg that has a bunch of files including the .app bundle.</div><div><= br></div><div>There may be a bit too much complexity but have look at how I= build the .app bundle in</div><div><a href=3D"https://github.com/barry-sco= tt/BarrysEmacs/blob/master/Editor/PyQtBEmacs/macosx.mak" target=3D"_blank">= https://github.com/barry-scott/BarrysEmacs/blob/master/Editor/PyQtBEmacs/bu= ild-macosx.sh</a></div><div>and</div><div><a href=3D"https://github.com/bar= ry-scott/BarrysEmacs/blob/master/Editor/PyQtBEmacs/brand.setup-macosx.py" t= arget=3D"_blank">https://github.com/barry-scott/BarrysEmacs/blob/master/Edi= tor/PyQtBEmacs/brand.setup-macosx.py</a></div><div><br></div><div>I'm u= sing PyQt not Tk.</div><div><br></div><div>Barry</div><div><br></div><br><b= lockquote type=3D"cite"><div><div dir=3D"ltr"><div><div><span style=3D"font= -family:monospace"><br></span></div><div><span style=3D"font-family:monospa= ce"><br></span></div><div><span style=3D"font-family:monospace">Thanks for = reading through all this! <br></span></div><div><span style=3D"font-family:= monospace"><br></span></div><div><span style=3D"font-family:monospace"><br>= </span></div><div><span style=3D"font-family:monospace"><span style=3D"font= -family:monospace">=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D</span></span></div><div><span style=3D"font-family:monospace"><br></spa= n></div><div><span style=3D"font-family:monospace">PS: Contents of my .../U= niversal/other-sources directory: <br></span></div><div><span style=3D"font= -family:monospace"><br></span></div><div><span style=3D"font-family:monospa= ce"> -rw-r--r-- =C2=A0 1 admin =C2=A0staff =C2=A0 =C2=A0367573 Nov 10 00:5= 3 ncurses-5.9-20120616-patch.sh.bz2<br> -rw-r--r-- =C2=A0 1 admin =C2=A0st= aff =C2=A0 2826473 Nov 10 00:53 ncurses-5.9.tar.gz<br> -rw-r--r-- =C2=A0 1= admin =C2=A0staff =C2=A0 9834044 Nov =C2=A09 22:19 openssl-1.1.1l.tar.gz<b= r> -rw-rw-rw-@ =C2=A01 admin =C2=A0staff =C2=A0 2956627 Nov 10 01:06 sqlit= e-autoconf-3350500.tar.gz<br> -rw-rw-rw-@ =C2=A01 admin =C2=A0staff =C2=A0= 10259009 Nov =C2=A09 22:55 tcl8.6.11-src.tar.gz<br> -rw-rw-rw-@ =C2=A01 ad= min =C2=A0staff =C2=A0 4496914 Nov 10 00:37 tk8.6.11-src.tar.gz<br> -rw-rw= -rw-@ =C2=A01 admin =C2=A0staff =C2=A0 1490665 Nov 10 00:45 xz-5.2.3.tar.gz= </span></div><div><span style=3D"font-family:monospace"><br></span></div><d= iv><div><span style=3D"font-family:monospace">=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br></span></div><div><span style=3D"font-fam= ily:monospace"><br></span></div><div><span style=3D"font-family:monospace">= <br></span></div><div><div dir=3D"ltr"><div dir=3D"ltr"><div style=3D"font-= size:12px"><span style=3D"font-family:monospace">Paul Romer=C2=A0<br><a hre= f=3D"mailto:[email protected]" style=3D"color:rgb(17,85,204)" target=3D"_b= lank">[email protected]</a>=C2=A0|=C2=A0<a href=3D"http://paulromer.net/" = style=3D"color:rgb(17,85,204)" target=3D"_blank">paulromer.net</a>=C2=A0|= =C2=A0<a href=3D"https://twitter.com/paulmromer?ref_src=3Dtwsrc%5Egoogle%7C= twcamp%5Eserp%7Ctwgr%5Eauthor" style=3D"color:rgb(17,85,204)" target=3D"_bl= ank">@paulromer</a></span></div><div style=3D"font-size:12px"><span style= =3D"font-family:monospace"><br></span></div></div></div></div></div></div><= /div> _______________________________________________<br>Pythonmac-SIG maillist = =C2=A0- =C2=A0<a href=3D"mailto:[email protected]" target=3D"_blank"= >[email protected]</a><br><a href=3D"https://mail.python.org/mailman= /listinfo/pythonmac-sig" target=3D"_blank">https://mail.python.org/mailman/= listinfo/pythonmac-sig</a><br>unsubscribe: <a href=3D"https://mail.python.o= rg/mailman/options/Pythonmac-SIG" target=3D"_blank">https://mail.python.org= /mailman/options/Pythonmac-SIG</a><br></div></blockquote></div><br></div>__= _____________________________________________<br> Pythonmac-SIG maillist=C2=A0 -=C2=A0 <a href=3D"mailto:Pythonmac-SIG@python= .org" target=3D"_blank">[email protected]</a><br> <a href=3D"https://mail.python.org/mailman/listinfo/pythonmac-sig" rel=3D"n= oreferrer" target=3D"_blank">https://mail.python.org/mailman/listinfo/pytho= nmac-sig</a><br> unsubscribe: <a href=3D"https://mail.python.org/mailman/options/Pythonmac-S= IG" rel=3D"noreferrer" target=3D"_blank">https://mail.python.org/mailman/op= tions/Pythonmac-SIG</a><br> </blockquote></div><br clear=3D"all"><div><br></div>-- <br><div dir=3D"ltr"= class=3D"gmail_signature"><div dir=3D"ltr">Christopher Barker, PhD (Chris)= <br><br> Python Language Consulting<br>=C2=A0 - Teaching<br>=C2=A0 - Scient= ific Software Development<br>=C2=A0 - Desktop GUI and Web Development<br>= =C2=A0 - wxPython, numpy, scipy, Cython<br></div></div> --00000000000001e57505d0c35409-- --===============4911205781155904835== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Pythonmac-SIG maillist - [email protected] https://mail.python.org/mailman/listinfo/pythonmac-sig unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG --===============4911205781155904835==--