What are those packages, you use? ScikitLearn.jl is one of those (a wrapper package, requiring PyCall, for Python’s scikit-learn), the most important or only one?
You CAN use (all of) Python’s scikit-learn (with its Python API) from Julia with (see how to import there in the docs): The Julia module PythonCall · PythonCall & juliacall
That’s probably not very useful to know, since code you use doesn’t use the Python API directly rather the Julia API, i.e. the wrapper ScikitLearn.jl. Of course PyCall (and it) should just work, but I checked if PythonCall support is on the radar, and I only found it mentioned in one unrelated comment: https://github.com/search?q=repo%3Acstjean%2FScikitLearn.jl%20PythonCall&type=code
The rabbit hole is a bit deeper, you might be using (which also requires PyCall): GitHub - JuliaAI/MLJScikitLearnInterface.jl: MLJ Interface for ScikitLearn.jl
Some wrapper packages have been migrating from PyCall, and I believe PythonCall.jl is the future. [You should be able to use PyCall and PythonCall together, e.g. if one of your (wrapper) packages uses one, and another the other.]
One important one to switch (keeping the name), also PyMNE.jl switched:
You can see PyCall has “334 Dependants”, so it’s hard to fully dislodge (vs “26 Dependants” for PythonCall):
https://juliahub.com/ui/Packages/PyCall/GkzkC/1.95.1?page=0
[Actually CatBoost is still listed as one, so it seems the dependents aren’t updated automatically, maybe on purpose, since for older versions, that you can still install, PyCall is used.]
E.g. PyPlot.jl uses PyCall.jl, but PythonPlot.jl, its replacement, uses PythonCall.jl. Note, I don’t think you can support both PyCall and PythonCall at the same time with some package (i.e. in same, or newest, version).
One package using PythonCall.jl with MLJ:
One solution is if/when more of the Julia ecosystem uses Julia only packages, I’m sure the reliance on ScikitLearn.jl is getting less and less. E.g. people use DataFrames.jl rather than Pandas.jl (or PandasLite.jl both packages rely on PyCall.jl and are hopefully getting outdated to use, still PythonCall.jl has some pandas specific code if not).
It seems likely you might use MLJ.jl and then possible (or in other ways through workarounds): GitHub - JuliaAI/MLJScikitLearnInterface.jl: MLJ Interface for ScikitLearn.jl
The notebook is using DelimitedFiles
(and CSV), a package getting a bit outdated to use, or arguably CSV only is good enough. It also mentioned (as an alternative) the very outdated (as a Julia wrapper) TensorFlow.jl
.