Juan Luis,
The intention of the setup.py is so that people can do things like
$ sudo pip install
https://bitbucket.org/petsc/petsc/get/master.tar.gz#egg=petsc-master
100% |################################| 13.3MB 881kB/s
Installing collected packages: petsc-master
Running setup.py install for petsc-master
PETSc: configure
configure options:
PETSC_ARCH=macosx-10.10-intel-python
--with-shared-libraries=1
--with-debugging=0
--with-c2html=0
--with-sowing=0
--with-fc=0
--with-cxx=0
--with-mpi=0
...
--destDir=/Library/Python/2.7/site-packages/petsc
--prefix=/Library/Python/2.7/site-packages/petsc
*** Using PETSC_DIR=/private/tmp/pip-build-z0Odnn/petsc-master
PETSC_ARCH=macosx-10.10-intel-python ***
*** Installing PETSc at prefix location:
/Library/Python/2.7/site-packages/petsc ***
====================================
Install complete.
Now to check if the libraries are working do (in current directory):
make PETSC_DIR=/Library/Python/2.7/site-packages/petsc PETSC_ARCH="" test
====================================
Successfully installed petsc-master
$ sudo PETSC_DIR=/Library/Python/2.7/site-packages/petsc PETSC_ARCH="" pip
install
https://bitbucket.org/petsc/petsc4py/get/master.tar.gz#egg=petsc4py-master
Collecting petsc4py-master from
https://bitbucket.org/petsc/petsc4py/get/master.tar.gz#egg=petsc4py-master
Downloading https://bitbucket.org/petsc/petsc4py/get/master.tar.gz (216kB)
100% |################################| 217kB 467kB/s
Requirement already satisfied (use --upgrade to upgrade): numpy in
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
(from petsc4py-master)
Requirement already satisfied (use --upgrade to upgrade): Cython>=0.15 in
/Library/Python/2.7/site-packages/Cython-0.21.2-py2.7-macosx-10.10-intel.egg
(from petsc4py-master)
Installing collected packages: petsc4py-master
Running setup.py install for petsc4py-master
cythonizing 'petsc4py.PETSc.pyx' -> 'petsc4py.PETSc.c'
cythonizing 'libpetsc4py/libpetsc4py.pyx' -> 'libpetsc4py/libpetsc4py.c'
PETSC_DIR: /Library/Python/2.7/site-packages/petsc
....
removing /tmp/tmpwZjccQ.py
Successfully installed petsc4py-master
~/Src
$ python
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import petsc4py
>>> petsc4py.init()
That is the setup is so that users can easily install PETSc for use from
petsc4py and then easily install petsc4py without ever needing to directly
worry about configure, make, etc etc .... themselves.
Make sense?
(Also I think it should be fine to use --download-suitesparse options etc
with the setup.py though I have not tested it.)
Barry
I'll check with Lisandro about eliminating the need for that
PETSC_DIR=/Library/Python/2.7/site-packages/petsc PETSC_ARCH=""
since petsc4py should automatically check if PETSc libs are install for python
and use them;
> On Jan 9, 2015, at 11:51 AM, Juan Luis Cano <[email protected]> wrote:
>
> Hello Satish, I reply you inline:
>
> On 2015-01-08 21:46, Satish Balay wrote:
>> For one - I think each external package should be packaged separately
>> - and packagers should not rely on --download-package functionality.
>
> Fair point. Doing it this way was just easy, but you are right I should
> decouple the external packages. That is unrelated to my problem though.
>
>> Secondly - petsc/umfpack etc libs will get installed in
>> $PREFIX/lib/python2.7/site-packages/petsc/lib only if petsc is
>> configured with the option:
>>
>> --prefix=$PREFIX/lib/python2.7/site-packages/petsc/lib
>>
>> Perhaps there is an error here? You can check [or send us]
>> configure.log created by PETSc.
>
> Actually this is unsurprising to me, because all Python modules (i.e. those
> installed via 'python setup.py install') go to
> $PREFIX/lib/python2.7/site-packages, and I didn't expect petsc to be an
> exception.
>
> After reading your reply I inspected the resulting files and probably PETSc
> is not meant to be there, which makes me wonder if I should use the Python
> installer in the first place. The 'setup.py' way is mentioned nowhere in the
> docs...
>
> I just switched to traditional './configure && make' and now the libraries
> are where I wanted. I had to specify PETSC_DIR though when building petsc4py
> but that is fine. I should probably take the same path with slepc.
>
> Problem solved! But what is the status of the setup.py installation procedure
> then?
>
> Answering Barry too:
>
> On 2015-01-09 00:58, Barry Smith wrote:
>> 2) For the longer term we'd like to make it trivial for things work as you
>> desire. We've revamped our installation process in the developer version of
>> PETSc http://www.mcs.anl.gov/petsc/developers/index.html (git branch
>> barry/namespace-install) and would be happy to work with you to get that
>> version to to have the support you require. I'm guessing that we could add
>> an optional argument to our setup.py that allows you to bypass the extra
>> 'petsc' in the installation directory and we'd be happy to add that.
>
> Thanks for your support. Perhaps this is not needed anymore given the above,
> but what are the changes that you introduced specifically? As there is no
> readme it is difficult to me to figure it out, as I am not familiarized with
> PETSc source code...
>
> Juan Luis