如何在Julia中使用Anaconda中不可用且需要通过pip安装的Python包

如何在Julia中使用Anaconda中不可用且需要通过pip安装的Python包,python,pip,anaconda,julia,pycall,Python,Pip,Anaconda,Julia,Pycall,我使用Julia 1.6.0(今天的beta版),并希望通过PyCall使用Python包plfit 不幸的是,plfit在Anaconda中不可用,因此我无法使用Conda模块安装它: julia> using Conda julia> Conda.add("plfit") [ Info: Running `conda install -y plfit` in root environment Collecting package metadata (curr

我使用Julia 1.6.0(今天的beta版),并希望通过
PyCall
使用Python包
plfit

不幸的是,
plfit
在Anaconda中不可用,因此我无法使用Conda模块安装它:

julia> using Conda

julia> Conda.add("plfit")
[ Info: Running `conda install -y plfit` in root environment
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.

PackagesNotFoundError: The following packages are not available from current channels:

  - plfit

...

如何从Julia安装此软件包?

您可以通过
PyCall
模块从Julia运行
pip

此外,包
plfit
引用了一个
cython
包,该包在Python内置版本中不存在,并且不会自动安装。因此,您需要执行以下操作:

using PyCall
run(`$(PyCall.python) -m pip install --upgrade cython`)
run(`$(PyCall.python) -m pip install plfit`)
现在,Julia将提供
plfit
软件包:

julia> plfit = pyimport("plfit");

julia> x=rand(1000);

julia> myplfit = plfit.plfit(x)
PYTHON plfit executed in 0.064029 seconds
xmin: 0.397582 n(>xmin): 625 alpha: 2.92546 +/- 0.0770183   Log-Likelihood: 36.3511   ks: 0.197384 p(ks): 4.09676e-22
PyObject <plfit.plfit.plfit object at 0x0000000064871A90>
julia>plfit=pyimport(“plfit”);
julia>x=rand(1000);
julia>myplfit=plfit.plfit(x)
PYTHON plfit在0.064029秒内执行
xmin:0.397582 n(>xmin):625α:2.92546+/-0.0770183对数似然率:36.3511 ks:0.197384 p(ks):4.09676e-22
PyObject

最后,请注意,有时以这种方式安装的某些软件包在查找二进制Python依赖项时可能会遇到问题(plfit的情况并非如此)。在这种情况下,您需要将文件夹
%HOMEPATH%\.julia\conda\3\Library\bin
添加到
PATH
环境变量中(将
%HOMEPATH%\.julia
替换为
julia\u-DEPOT\u-PATH
或适当的系统路径,具体取决于您的配置和平台)。

您也可以将pip与conda.jl一起使用(随PyCall提供):


这是一个非常有用的提示。我经常忘记怎么做。Ser还有OdsIo.jl包的构建脚本。是的,这非常有用。但是到今天为止:(1)pip包含在PyCall中,因此这里似乎不需要安装操作。(2) 如果缺少pip,我肯定会通过
Conda.runconda(`install-c anaconda pip`)
安装pip。(3) 我使用的是
JULIA\u DEPOT\u PATH
,发现在
--user
环境中使用Python包通常是问题的根源(Python的包管理健壮性与JULIA没有任何相似之处)。这也是我个人的看法:——)