Within PyCharm
import qgis.core as qgis
vector_lyr = qgis.QgsVectorLayer("Point", "distance nodes", "memory")
pr = vector_lyr.dataProvider()
print pr
prints None
Within Python Interpreter in QGIS
import qgis.core as qgis
vector_lyr = qgis.QgsVectorLayer("Point", "distance nodes", "memory")
pr = vector_lyr.dataProvider()
print pr
prints <qgis.core.QgsVectorDataProvider object at 0x000000000DAFF0D0>
I've tried this Getting dataProvider from vector layer outside QGIS and still no luck. Thanks.
[Edit] I found this: Access Sextante (processing) in standalone QGIS app? is this the case for dataProviders? Is there a workaround?
[EDIT2]
Tried this to no avail. I'm trying to create an in memory vector layer, write values to it then do something else after.
import qgis.core as qgis
qgis.QgsApplication.initQgis()
vector_lyr = qgis.QgsVectorLayer("Point", "distance nodes", "memory")
pr = vector_lyr.dataProvider()
print pr
prints None
Best Answer
You need to first initQgis so that the data providers are loaded: