[GIS] Can’t get dataProvider object outside of QGIS python Interpreter

pythonqgis

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:

from qgis.core import QgsApplication
QgsApplication.initQgis()
... your stuff here
Related Question