On Fri, Apr 11, 2014 at 3:23 PM, David Ragazzi <[email protected]>wrote:

> > In my ideal world, I think we start with cmake and make to build the
> c++ components, and then setup.py for the python installation in lieu of a
> typical `make install`, but both would be required:
> > (cmake $NUPIC && make)
> python setup.py (develop|install) OR easy_install . OR pip install . OR
> manual PYTHONPATH fixup.
>
> This is really a cruel question...
>
> As NuPIC is a mixture of Python and C++ code, I don't know surely if CMake
> should call setup.py or if setup.py should call CMake..  :-(
>

I say neither.  I'd ideally run cmake and make beforehand.


>
>
>
>
>
>
> On 11 April 2014 18:57, Austin Marshall <[email protected]> wrote:
>
>> The problem with standards is there are so many!  The layout you've drawn
>> here is fairly typical and consistent with what I would expect.  In short,
>> there's usually a root directory with a README and setup.py, and maybe bin/
>> docs/ and any number of python packages, but usually just one.  The term
>> "package" is meaningful within the python ecosystem -- it's any directory
>> with a file called __init__.py, which can be empty, and usually contains
>> additional python modules (files with a .py suffix) or packages.
>>
>> Where it gets difficult is that there are multiple competing packaging
>> implementations (setuptools, distutils, etc), multiple competing packaging
>> formats (egg vs wheel, binary vs source), multiple competing installers
>> (easy_install vs pip vs setup.py), and then of course the issue of c/c++
>> extensions, all of which may be interchangeable at various different
>> stages.  For many of the approaches there is some redundancy with the way
>> we're using cmake with NuPIC.
>>
>> In my ideal world, I think we start with cmake and make to build the c++
>> components, and then setup.py for the python installation in lieu of a
>> typical `make install`, but both would be required:
>>
>> (cmake $NUPIC && make)
>> python setup.py (develop|install) OR easy_install . OR pip install . OR
>> manual PYTHONPATH fixup.
>>
>> The cmake and make commands build in-place, don't require env variables,
>> and doesn't affect anything outside of the $NUPIC source tree.  Then, the
>> python setup.py ecosystem is used for using/installing the final python
>> package.  I think this approach gives maximum control and flexibility.
>>
>>
>>
>> On Fri, Apr 11, 2014 at 2:42 PM, David Ragazzi <[email protected]>wrote:
>>
>>> Ok.. I found this one and liked it.. It also seems being well
>>> recommended for Python projects..
>>>
>>> I adapted to NuPIC..
>>>
>>> *Nupic/*
>>> *|-- bin/*
>>> *|   |-- nupic*
>>> *|*
>>> *|-- docs/*
>>> *|*
>>> *|-- nupic/*
>>> *|   |-- test/*
>>> *|   |   |-- __init__.py*
>>> *|   |   |-- test_main.py*
>>> *|   |   *
>>> *|   |-- __init__.py*
>>> *|   |-- main.py*
>>> *|*
>>> *|-- setup.py*
>>> *|-- README.md*
>>>
>>> I got this model from here:
>>>
>>> http://stackoverflow.com/questions/193161/what-is-the-best-project-structure-for-a-python-application
>>>
>>>
>>> Which is inspired in best practices recommended here:
>>>
>>> http://as.ynchrono.us/2007/12/filesystem-structure-of-python-project_21.html
>>>
>>> Subutai, Chetan, Fergal, and others: what do you think? It has setup.py
>>> in root, the binaries and source are in separated locations, etc.. However,
>>> we could improve it...
>>>
>>> David
>>>
>>>
>>>
>>>
>>> On 11 April 2014 16:07, David Ragazzi <[email protected]> wrote:
>>>
>>>> Sorry for my ignorancy.. But which is default structure for Python
>>>> projects? Please,someone explain to me in order to we  can align what we
>>>> want and the current process does..
>>>>
>>>>
>>>> On 11 April 2014 15:53, Fergal Byrne <[email protected]>wrote:
>>>>
>>>>> +1 on Subutai's view. IMHO it is a *requirement* for NuPIC to be like
>>>>> any other OSS software.
>>>>>
>>>>> For nupic.core, we should have cd build; cmake ..; make; [make test;]
>>>>> make install (installs to std locations /usr/local/bin, lib, include)
>>>>> For nupic.py; setup.py or pip install (installs to same place as
>>>>> everything else)
>>>>>
>>>>> There should be no environment variables to remember or set.
>>>>>
>>>>> This will require serious reorganisation, but it is the price of
>>>>> getting NuPIC out in the wild.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Fri, Apr 11, 2014 at 7:27 PM, Matthew Taylor <[email protected]>wrote:
>>>>>
>>>>>> I can see Subutai's point here. While nupic.core is a C++ project,
>>>>>> nupic is a python project. We should try to maintain python standards
>>>>>> as much as possible, even though we have to deal with a C++ build as
>>>>>> well.
>>>>>> ---------
>>>>>> Matt Taylor
>>>>>> OS Community Flag-Bearer
>>>>>> Numenta
>>>>>>
>>>>>>
>>>>>> On Fri, Apr 11, 2014 at 11:18 AM, Subutai Ahmad <[email protected]>
>>>>>> wrote:
>>>>>> >
>>>>>> > I'm not an expert in this. I just know it is really really hard to
>>>>>> make
>>>>>> > these things robust in all situations.    For example, below is my
>>>>>> sys.path
>>>>>> > - where would you install nupic?
>>>>>> >
>>>>>> > I strongly recommend we use the standard python way of doing this,
>>>>>> whatever
>>>>>> > that is.
>>>>>> >
>>>>>> > --Subutai
>>>>>> >
>>>>>> > ['',
>>>>>> >  '/Users/Subutai/local/bin',
>>>>>> >  '/Users/Subutai/nta/grok-projects/gef',
>>>>>> >
>>>>>> >
>>>>>> '/Users/Subutai/local/lib/python2.7/site-packages/pandas-0.13.1-py2.7-macosx-10.9-intel.egg',
>>>>>> >
>>>>>>  
>>>>>> '/Users/Subutai/local/lib/python2.7/site-packages/plotly-0.5.7-py2.7.egg',
>>>>>> >
>>>>>> >
>>>>>> '/Users/Subutai/local/lib/python2.7/site-packages/simplejson-3.4.0-py2.7.egg',
>>>>>> >
>>>>>> >
>>>>>> '/Users/Subutai/nta/nupic-darwin64/lib/python2.7/site-packages/setuptools-1.0-py2.7.egg',
>>>>>> >
>>>>>> >
>>>>>> '/Users/Subutai/nta/nupic-darwin64/lib/python2.7/site-packages/pip-1.4.1-py2.7.egg',
>>>>>> >
>>>>>> >
>>>>>> '/Users/Subutai/Library/Python/2.7/lib/python/site-packages/setuptools-2.0.1-py2.7.egg',
>>>>>> >
>>>>>> >
>>>>>> '/Library/Python/2.7/site-packages/readline-6.2.4.1-py2.7-macosx-10.7-intel.egg',
>>>>>> >
>>>>>>  '/Users/Subutai/nta/nupic-darwin64/nta/eng/lib/python2.7/site-packages',
>>>>>> >  '/Users/Subutai/nta/grok-projects',
>>>>>> >  '/Users/Subutai/local/lib/python2.7/site-packages',
>>>>>> >  '/Users/Subutai/nta/grok',
>>>>>> >  '/Users/Subutai/nta/nupic-darwin64/lib64/python2.7/site-packages',
>>>>>> >  '/Users/Subutai/nta/nupic-darwin64/lib/python2.7/site-packages',
>>>>>> >  '/Users/Subutai/local/src/ipython-1.1.0',
>>>>>> >
>>>>>>  '/Users/Subutai/nta/nupic-darwin64/lib/python2.7/site-packages/PIL',
>>>>>> >
>>>>>> >
>>>>>> '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
>>>>>> >
>>>>>>  
>>>>>> '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
>>>>>> >
>>>>>> >
>>>>>> '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
>>>>>> >
>>>>>> >
>>>>>> '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
>>>>>> >
>>>>>> >
>>>>>> '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
>>>>>> >
>>>>>> >
>>>>>> '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python',
>>>>>> >
>>>>>> >
>>>>>> '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
>>>>>> >
>>>>>> >
>>>>>> '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
>>>>>> >
>>>>>> >
>>>>>> '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
>>>>>> >  '/Users/Subutai/Library/Python/2.7/lib/python/site-packages',
>>>>>> >
>>>>>> >
>>>>>> '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC',
>>>>>> >  '/Library/Python/2.7/site-packages',
>>>>>> >  '/Users/Subutai/nta/nupic-darwin64/lib64/python2.7/site-packages',
>>>>>> >
>>>>>>  '/Users/Subutai/local/lib/python2.7/site-packages/IPython/extensions']
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> > On Fri, Apr 11, 2014 at 11:12 AM, David Ragazzi <
>>>>>> [email protected]>
>>>>>> > wrote:
>>>>>> >>
>>>>>> >> We could use this in CMake:
>>>>>> >>
>>>>>> >> execute_process(COMMAND ${python} import sys; print sys.path;
>>>>>> >> OUTPUT_VARIABLE PYTHON_PATH)
>>>>>> >>
>>>>>> >> and then install python libraries to ${PYTHON_PATH}/nupic
>>>>>> >>
>>>>>> >> :-)
>>>>>> >>
>>>>>> >>
>>>>>> >> On 11 April 2014 15:06, David Ragazzi <[email protected]>
>>>>>> wrote:
>>>>>> >>>
>>>>>> >>> Subutai,
>>>>>> >>>
>>>>>> >>> Isn't.. sys.path py function return default location
>>>>>> (PYTHONPATH).. It's
>>>>>> >>> just we use this default location!
>>>>>> >>>
>>>>>> >>>
>>>>>> >>> On 11 April 2014 15:01, Subutai Ahmad <[email protected]>
>>>>>> wrote:
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>> Yes, but that *requires* you to set an environment variable.
>>>>>> >>>>
>>>>>> >>>> --Subutai
>>>>>> >>>>
>>>>>> >>>> On Fri, Apr 11, 2014 at 10:16 AM, Matthew Taylor <
>>>>>> [email protected]>
>>>>>> >>>> wrote:
>>>>>> >>>>>
>>>>>> >>>>> On Fri, Apr 11, 2014 at 9:58 AM, Subutai Ahmad <
>>>>>> [email protected]>
>>>>>> >>>>> wrote:
>>>>>> >>>>> > To see why it would not work consider this: I should be able
>>>>>> to login
>>>>>> >>>>> > to my
>>>>>> >>>>> > home directory, type python, and then do "import nupic". It is
>>>>>> >>>>> > necessary to
>>>>>> >>>>> > support this. Unless the NuPIC release is *placed* in a
>>>>>> standard
>>>>>> >>>>> > location,
>>>>>> >>>>> > python will have no idea where nupic is.
>>>>>> >>>>>
>>>>>> >>>>> +1. I do this all the time. However, I can easily update my
>>>>>> PYTHONPATH
>>>>>> >>>>> after I've built NuPIC.
>>>>>> >>>>>
>>>>>> >>>>>
>>>>>> >>>>>
>>>>>> >>>>> ---------
>>>>>> >>>>> Matt Taylor
>>>>>> >>>>> OS Community Flag-Bearer
>>>>>> >>>>> Numenta
>>>>>> >>>>>
>>>>>> >>>>> _______________________________________________
>>>>>> >>>>> nupic mailing list
>>>>>> >>>>> [email protected]
>>>>>> >>>>>
>>>>>> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>> _______________________________________________
>>>>>> >>>> nupic mailing list
>>>>>> >>>> [email protected]
>>>>>> >>>>
>>>>>> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org
>>>>>> >>>>
>>>>>> >>>
>>>>>> >>>
>>>>>> >>>
>>>>>> >>> --
>>>>>> >>> David Ragazzi
>>>>>> >>> OS Community Commiter
>>>>>> >>> Numenta.org
>>>>>> >>> --
>>>>>> >>> "I think James Connolly, the Irish revolutionary, is right when
>>>>>> he says
>>>>>> >>> that the only prophets are those who make their future. So we're
>>>>>> not
>>>>>> >>> anticipating, we're working for it."
>>>>>> >>
>>>>>> >>
>>>>>> >>
>>>>>> >>
>>>>>> >> --
>>>>>> >> David Ragazzi
>>>>>> >> OS Community Commiter
>>>>>> >> Numenta.org
>>>>>> >> --
>>>>>> >> "I think James Connolly, the Irish revolutionary, is right when he
>>>>>> says
>>>>>> >> that the only prophets are those who make their future. So we're
>>>>>> not
>>>>>> >> anticipating, we're working for it."
>>>>>> >>
>>>>>> >> _______________________________________________
>>>>>> >> nupic mailing list
>>>>>> >> [email protected]
>>>>>> >> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org
>>>>>> >>
>>>>>> >
>>>>>> >
>>>>>> > _______________________________________________
>>>>>> > nupic mailing list
>>>>>> > [email protected]
>>>>>> > http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org
>>>>>> >
>>>>>>
>>>>>> _______________________________________________
>>>>>> nupic mailing list
>>>>>> [email protected]
>>>>>> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> Fergal Byrne, Brenter IT
>>>>>
>>>>> Author, Real Machine Intelligence with Clortex and NuPIC
>>>>> https://leanpub.com/realsmartmachines
>>>>>
>>>>> <http://www.examsupport.ie>http://inbits.com - Better Living through
>>>>> Thoughtful Technology
>>>>> http://ie.linkedin.com/in/fergbyrne/
>>>>> https://github.com/fergalbyrne
>>>>>
>>>>> e:[email protected] t:+353 83 4214179
>>>>> Formerly of Adnet [email protected] http://www.adnet.ie
>>>>>
>>>>> _______________________________________________
>>>>> nupic mailing list
>>>>> [email protected]
>>>>> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> David Ragazzi
>>>> OS Community Commiter
>>>> Numenta.org
>>>> --
>>>> "I think James Connolly, the Irish revolutionary, is right when he says 
>>>> that
>>>> the only prophets are those who make their future. So we're not
>>>> anticipating, we're working for it."
>>>>
>>>
>>>
>>>
>>> --
>>> David Ragazzi
>>> OS Community Commiter
>>> Numenta.org
>>> --
>>> "I think James Connolly, the Irish revolutionary, is right when he says that
>>> the only prophets are those who make their future. So we're not
>>> anticipating, we're working for it."
>>>
>>> _______________________________________________
>>> nupic mailing list
>>> [email protected]
>>> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org
>>>
>>>
>>
>> _______________________________________________
>> nupic mailing list
>> [email protected]
>> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org
>>
>>
>
>
> --
> David Ragazzi
> OS Community Commiter
> Numenta.org
> --
> "I think James Connolly, the Irish revolutionary, is right when he says that
> the only prophets are those who make their future. So we're not
> anticipating, we're working for it."
>
> _______________________________________________
> nupic mailing list
> [email protected]
> http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org
>
>
_______________________________________________
nupic mailing list
[email protected]
http://lists.numenta.org/mailman/listinfo/nupic_lists.numenta.org

Reply via email to