[Tutor] Problem compiling code from GitHub

Dave Hill dave at the-hills.org.uk
Mon Aug 27 07:14:33 EDT 2018


Hi,

As a volunteer on a Welsh Heritage Railway I undertake their Electrical 
Equipment testing, for which I use a Megger PAT420. This device stores 
data in 'sqlite', which using Python I can read and generate a number of 
reports in 'csv' format. I now wish to collate asset data for various 
locations, and as I use OpenOffice I want to generate an 'ods' document 
with a 'sheet' for each location.

At present I generate a 'csv' file for each location, but as there are 
20 locations this is a bit cumbersome. I use the 20 locations as a 
method to make the handing of over 500 assets somewhat manageable.

I have found 'odswriter' on GitHub 
https://github.com/mmulqueen/odswriter which appears to provide what I 
want. However, I have come to a halt, due to the limitation of my knowledge.

I admit that I am confounded as to where/how to access this code.

I am using Python 3.6.4, in IDLE on a PC running windows.

I am using the following code as a starting point , Test_ODS#1.py

    import datetime
    import decimal
    ##import odswriter as ods
    try:
         from OdsWriter import odswriter as ods
    except RuntimeError:
         print("Error importing OdsWriter!")

    # Single sheet mode
    with ods.writer(open("test.ods","wb")) as odsfile:
         odsfile.writerow(["String", "ABCDEF123456", "123456"])
         # Lose the 2L below if you want to run this example code on
    Python 3, Python 3 has no long type.
         odsfile.writerow(["Float", 1, 123, 123.123,
    decimal.Decimal("10.321")])
         odsfile.writerow(["Date/DateTime", datetime.datetime.now(),
    datetime.date(1989, 11, 9)])
         odsfile.writerow(["Time",datetime.time(13,
    37),datetime.time(16, 17, 18)])
         odsfile.writerow(["Bool", True, False, True])
         odsfile.writerow(["Formula", 1, 2, 3,
    ods.Formula("IF(A1=2,B1,C1)")])

    # Multiple sheet mode
    with ods.writer(open("test-multi.ods","wb")) as odsfile:
         bears = odsfile.new_sheet("Bears")
         bears.writerow(["American Black Bear", "Asiatic Black Bear",
    "Brown Bear", "Giant Panda", "Qinling Panda",
                          "Sloth Bear", "Sun Bear", "Polar Bear",
    "Spectacled Bear"])
         sloths = odsfile.new_sheet("Sloths")
         sloths.writerow(["Pygmy Three-Toed Sloth", "Maned Sloth",
    "Pale-Throated Sloth", "Brown-Throated Sloth",
                          "Linneaeus's Two-Twoed Sloth", "Hoffman's
    Two-Toed Sloth"])

I get the following error

    Traceback (most recent call last):
       File "C:\Code\Python\ODS_Writer\Test_ODS#1.py", line 5, in <module>
         from OdsWriter import odswriter as ods
       File "C:\Code\Python\ODS_Writer\OdsWriter.py", line 7, in <module>
         from . import ods_components
    ImportError: attempted relative import with no known parent package

I have put the code from GitHub in various locations subject to my 
limited knowledge of Python, but I have no idea what the following 
extract means, and searching online on & off for two days has proved 
unfruitful.

    from __future__ import unicode_literals
    from zipfile import ZipFile
    import decimal
    import datetime
    from xml.dom.minidom import parseString

    from . import ods_components
    from .formula import Formula

I understand the use of 'import' and have written my own modules, but 
from . import ods_components has me floored.

Thank you in advance for any help.

Dave





-------------- next part --------------
import datetime
import decimal
##import odswriter as ods
try:
    from OdsWriter import odswriter as ods
except RuntimeError:
    print("Error importing OdsWriter!")
    
# Single sheet mode
with ods.writer(open("test.ods","wb")) as odsfile:
    odsfile.writerow(["String", "ABCDEF123456", "123456"])
    # Lose the 2L below if you want to run this example code on Python 3, Python 3 has no long type.
    odsfile.writerow(["Float", 1, 123, 123.123, decimal.Decimal("10.321")])
    odsfile.writerow(["Date/DateTime", datetime.datetime.now(), datetime.date(1989, 11, 9)])
    odsfile.writerow(["Time",datetime.time(13, 37),datetime.time(16, 17, 18)])
    odsfile.writerow(["Bool", True, False, True])
    odsfile.writerow(["Formula", 1, 2, 3, ods.Formula("IF(A1=2,B1,C1)")])

# Multiple sheet mode
with ods.writer(open("test-multi.ods","wb")) as odsfile:
    bears = odsfile.new_sheet("Bears")
    bears.writerow(["American Black Bear", "Asiatic Black Bear", "Brown Bear", "Giant Panda", "Qinling Panda", 
                     "Sloth Bear", "Sun Bear", "Polar Bear", "Spectacled Bear"])
    sloths = odsfile.new_sheet("Sloths")
    sloths.writerow(["Pygmy Three-Toed Sloth", "Maned Sloth", "Pale-Throated Sloth", "Brown-Throated Sloth",
                     "Linneaeus's Two-Twoed Sloth", "Hoffman's Two-Toed Sloth"])


More information about the Tutor mailing list