Jonathan

Below is a python script I have been playing with for extracing some system information and additional information about modules that I need to import in my TSjson package. My intention is to put R code in tests/ that will check this before going on to do other tests, but I have not yet done that. The reason for this is that error message are not especially enlightening when other tests fail because python is not working as needed.

Please let me know if you find improvements.

Paul
__________

def test():

    try:
        import sys
        have_sys = True
    except:
        have_sys = False

    if sys.version_info >= (3, 0): return dict( error=
        "TSjson requires Python 2. Running "+ str(sys.version_info))
    # mechanize is not (yet) available for Python 3,
    # Also, urllib2 is split into urllib.request, urllib.error in Python 3


    try:
        import urllib2
        have_urllib2 = True
    except:
        have_urllib2 = False

    try:
        import re
        have_re = True
    except:
        have_re = False

    try:
        import csv
        have_csv = True
    except:
        have_csv = False

    try:
        import mechanize
        have_mechanize = True
    except:
        have_mechanize = False

    if (have_sys & have_urllib2 & have_re & have_csv & have_mechanize):
        err = 0
    else:
        err = 1

    return dict(
         exit=err,
             have_sys=have_sys, have_urllib2=have_urllib2,
             have_re = have_re, have_csv = have_csv,
             have_mechanize = have_mechanize)


try:
    import json
    print(json.JSONEncoder().encode(test()))
except:
    print(dict(exit=1, have_json = False))



On 13-11-01 10:17 AM, Jonathan Greenberg wrote:
This was actually the little script I was going to include (prompting me
to ask the question): a test for the python version number.
Save this (between the ***s) as e.g. python_version.py:

***

import sys
print(sys.version_info)

***

I've done almost no python coding, so I was going to call this with a
system("/pathto/python /pathto/python_version.py",intern=TRUE) call and
post-process the one-line text output.

--j


On Thu, Oct 31, 2013 at 12:45 PM, Paul Gilbert <pgilbert...@gmail.com
<mailto:pgilbert...@gmail.com>> wrote:



    On 13-10-31 01 <tel:13-10-31%2001>:16 PM, Prof Brian Ripley wrote:

        On 31/10/2013 15:33, Paul Gilbert wrote:



            On 13-10-31 03 <tel:13-10-31%2003>:01 AM, Prof Brian Ripley
            wrote:

                On 31/10/2013 00:40, Paul Gilbert wrote:

                    The old convention was that it went in the exec/
                    directory, but as you
                    can see at
                    
http://cran.at.r-project.org/__doc/manuals/r-devel/R-exts.__html#Non_002dR-scripts-in-__packages
                    
<http://cran.at.r-project.org/doc/manuals/r-devel/R-exts.html#Non_002dR-scripts-in-packages>



                       it can be in inst/anyName/. A minor convenience
                    of exec/ is that the
                    directory has the same name in source and when
                    installed, whereas
                    inst/anyName gets moved to anyName/, so debugging
                    can be a tiny bit
                    easier with exec/.

                    Having just put a package (TSjson) on CRAN with a
                    python script, here
                    are a few other pointers for getting it on CRAN:

                    -SystemRequirements: should indicate if a particular
                    version of python
                    is needed, and any non-default modules that are
                    needed. (My package
                    does
                    not work with Python 3 because some modules are not
                    available.) Some of
                    the libraries have changed, so it could be a bit
                    tricky to make
                    something work easily with both 2 and 3.

                    -You need a README to explain how to install Python.
                    (If you look at or
                    use mine, please let me know if you find problems.)


                Better to describe exactly what you need: installation
                instructions go
                stale very easily.

                    -The Linux and Sun CRAN test machines have Python 2
                    whereas winbuilder
                    has Python 3. Be prepared to explain that the
                    package will not work on
                    one or the other.


                Not true.  Linux and Solaris (sic) have both: the
                Solaris machines have
                2.6 and 3.3.


            For an R package how does one go about specifying which
            should be used?


        You ask the user to tell you the path or at least the command
        name, e.g.
        by an environment variable or R function argument.  Just like
        any other
        external program such as GhostScript.


    Yes, but since I don't have direct access to the CRAN test machines,
    specifically, on the CRAN test machines, how do I specify to use
    Python 2 or Python 3? (That is, I think you are the user when CRAN
    tests are done on Solaris, so I am asking you.)




                Please do not spread misinformation about machines you do
                not have any access to.


                    Another option to system() is pipe()

                    Paul

                    On 13-10-30 03 <tel:13-10-30%2003>:15 PM, Dirk
                    Eddelbuettel wrote:


                        On 30 October 2013 at 13:54, Jonathan Greenberg
                        wrote:
                        | R-developers:
                        |
                        | I have a small python script that I'd like to
                        include in an R
                        package I'm
                        | developing, but I'm a bit unclear about which
                        subfolder it should go
                        in.  R
                        | will be calling the script via a system()
                        call.  Thanks!

                        Up to you as you control the path. As "Writing R
                        Extensions" explains,
                        everything below the (source) directory inst/
                        will get installed.  I
                        like
                        inst/extScripts/ (or similar) as it denotes that
                        it is an external
                        script.

                        As an example, the gdata package has Perl code
                        for xls reading/writing
                        below a
                        directory inst/perl/ -- and I think there are
                        more packages doing
                        this.

                        Dirk



                    ________________________________________________
                    R-devel@r-project.org <mailto:R-devel@r-project.org>
                    mailing list
                    https://stat.ethz.ch/mailman/__listinfo/r-devel
                    <https://stat.ethz.ch/mailman/listinfo/r-devel>






    ________________________________________________
    R-devel@r-project.org <mailto:R-devel@r-project.org> mailing list
    https://stat.ethz.ch/mailman/__listinfo/r-devel
    <https://stat.ethz.ch/mailman/listinfo/r-devel>




--
Jonathan A. Greenberg, PhD
Assistant Professor
Global Environmental Analysis and Remote Sensing (GEARS) Laboratory
Department of Geography and Geographic Information Science
University of Illinois at Urbana-Champaign
259 Computing Applications Building, MC-150
605 East Springfield Avenue
Champaign, IL  61820-6371
Phone: 217-300-1924
http://www.geog.illinois.edu/~jgrn/
AIM: jgrn307, MSN: jgrn...@hotmail.com <mailto:jgrn...@hotmail.com>,
Gchat: jgrn307, Skype: jgrn3007

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to