For those, who like me, don't want to modify their system python (even by installing virtualenv), here's a hack to get things working:
First, make sure that you have successfully registered an external evaluator for Python. FindExternalEvaluators[]
should return it.
Then, we trigger loading the ExternalEvaluate framework (in case it hasn't been loaded yet):
In[1]:= ExternalEvaluate
Out[1]= ExternalEvaluate
We manually start up a session with a string return type, and assign it to appropriate the internal variable
In[2]:= ExternalEvaluate`ImportExport`Private`$ImporterPythonSession = StartExternalSession["Python" -> "String"]
Out[2]= ExternalSessionObject["9a23363e-5403-442d-8fbd-39f9aff7dc48"]
And now it works!
In[3]:= py = StartExternalSession["Python"]
Out[3]= ExternalSessionObject["5022a77c-eedb-4d39-bbb3-c8b6a644ecdf"]
In[4]:= ExternalEvaluate[py, "1+1"]
Out[4]= 2
Note: I posted this solution on the Mathematica StackExchange, where it is more likely to stay maintained than here (say, if a paclet update or 11.2.1 fixes this problem).