I am building a Task Workflow to automate deployment of Crowdsource Polling. I have a task for creating a feature layer from a spreadsheet that sets up a relationship class between the feature layer and related commenting table. Once this is finished I need to symbolize the layer based on a field in the comment layer. I have created a layer file to accomplish this need by symbolizing based on layer file. I have got this to work before packaging the project but need it to work from within a packaged project. When I use the Package Project tool I have saved a the layer file (.lyrx) using the "additonal files" input:
This adds the .lyrx into the commondata folder of the package.
My issue is that when I get the path for the .lyrx and plug it into my code I am getting a ValueError. When I do this before packaging the project I do not get a ValueError. I have also tried running the code from the package after I use the extract package tool and get the same error.
Here is my code:
p = os.path.dirname(arcpy.mp.ArcGISProject("CURRENT").defaultGeodatabase) aprx = arcpy.mp.ArcGISProject("CURRENT") m = aprx.listMaps("Map")[0] default_gdb = arcpy.mp.ArcGISProject("CURRENT").defaultGeodatabase rec_sites = os.path.join(default_gdb, "RecSitesXY") # local layer file path before packaging project #lf = arcpy.mp.LayerFile(os.path.join(p, "FeeToolRecSiteSymbols.lyrx")) # pro package layer file # layer filepath after packaging project lf = os.path.join(os.path.dirname(p), 'commondata', 'pro-recfeetool-deployment-task-workflow', 'FeeToolRecSiteSymbols.lyrx') # add coment layer and symbolize using layer file m.addDataFromPath(rec_sites) # Using insert layer instead of arcpy.ApplySymbologyFromLayer_management because # there is a known bug that this will not work from within a script m.insertLayer(m.listLayers()[0],lf) # clean up m.removeLayer(m.listLayers()[1]) aprx.save() I have also tried to search for the layer file this way and have tried using the output path with the same error
The value error happens at this point in the code:
m.insertLayer(m.listLayers()[0],lf)
Any help would be much appreciated.