On Mon, Jan 6, 2014 at 9:55 PM, Chris Barker <chris.barker@noaa.gov> wrote:
On Mon, Jan 6, 2014 at 12:26 PM, Steve Spicklemire <steve@spvi.com> wrote:
 
avoid troubling anyone with pesky questions. In that respect I've apparently failed, because here comes the question!

I think this is a use case that  is quite useful for us all to chew on a bit...

1st -- yes "Anaconda" refers to the distribution from Continuum. Note that "conda" is the packaging system that Anaconda uses, but it can also be used independently of the distribution.
 
I'm helping out with a python package: vpython <http://vpython.org>

[side note: fairly recently  a por tof VPython to wxPython was done -- is that what you are using? Notable because I think wxPython is still not available for Anaconda...)
 
and I'm also teaching an intro scientific computing class this spring. I'm mostly a Mac/Linux user, but my students are often windows users. I would love to permit my students to use enthought/canopy and/or continuum analytics (C.A.) along with vpython.

Either/or? As an instructor, I'd recommend you pick one and go with it -- if you need wx, that means Canopy for now. Alternatively, you suggest the python.org builds, and point your users to binaries they can get elsewhere (Chris Gohlke's site for Windows...)

At the moment we're creating binary releases of vpython for windows and mac and posting them on sourceforge <https://sourceforge.net/projects/vpythonwx/>.

Are these for the python.org builds? good for you!

Bruce has been building the windows binary using VC (no setup.py) in a way that's compatible withpython.org python for windows. I've been building the mac version using a setup.py script I cobbled together that works on MacOSX and Linux.

Why not distutils for building Windows? I find it really helpful. 
 
I've noticed that the anaconda system that C.A. installs uses MinGW on windows to build extensions.

I think Canopy does that too -- at least it did a few years ago. but I _think_ you can build extensions with either MinGW or MSVC for the same binary python -- if it's set up right ;-)

We don't use mingw to build packages distributed within canopy (at least not anymore). We build everything with MSVC 2008, as mixing mingw/MSVC often causes trouble.

We do provide mingw so that people can build extensions without depending on MS toolchain, but that's not a setup I would recommend in general. It works well for extensions that don't depend much on the C runtime (numpy is a good example), but as soon as you manipulate IO, etc... you encounter issues linked to ABI incompatibilities between what you get from the python runtime and mingw.

David 

I'd love to figure out how to build vpython under this system so that my windows users could use them together transparently.

You want to take a look at conda:


If you can build a conda recipe then you are set to go...

That being said, it is supposed to be a goal for Anaconda to be binary compatible with the python.org binaries -- so you may well be able to build the way you are, and give the users a way to install it into Anaconda. In theory, binary wheels are the way to do this.

I'm pretty sure I could work out how to build vpython with continuum analytics on the mac (which means building boost + wxPython using the C.A. python).

ahh -- you are using wx -- I'd check with the CA folks and see where they are at -- they said they were working on a wxPython package....and I'm sure they'd like help and testing...
 
Is there any way, *today*, to incorporate dependencies on external libraries (e.g., boost) in setup.py?

no -- except by hand with custom code.
 

I'm still a little unclear on your goals here. If you want to simple be able to tell your students to use Anaconda  then look into conda and the CA help lists -- and conda is more or less designed to solve these sorts of problems. also, the odds are good that Anaconda already has boost, and if not someone has done a conda recipe for it:


If you want your users to be able to use any of:

Anaconda
Python.org python
Canopy

Then I'd look into building binary wheels, and see if you can get them to work with Anaconda and Canopy.

Note: distutils does not address the third-party non-python dependency problem -- conda tries does address it (though still not clear to me if it helps you build them...) You may also want to look at Gattai, which aims to help you build  them:


HTH,
  -Chris




--

Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R            (206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115       (206) 526-6317   main reception

Chris.Barker@noaa.gov

_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
https://mail.python.org/mailman/listinfo/distutils-sig