首页 > 解决方案 > 如何解决这个网状/scipy 问题?

问题描述

我只用这一行创建了一个名为 test_optimize.py 的 Python 程序:

from scipy import optimize

我尝试使用 reticulate 运行它并得到下面描述的错误。我应该怎么做才能解决这个问题?

library(reticulate)
source_python("~/test_optimize.py")

#> Error in py_run_file_impl(file, local, convert) : 
#>   ImportError: dlopen(/Users/vkv/anaconda3/lib/python3.6/sitepackages/scipy/optimize/minpack2.cpython-36m-darwin.so, 2): Symbol not found: _main
#>   Referenced from: /Users/vkv/anaconda3/lib/python3.6/site-packages/scipy/optimize/minpack2.cpython-36m-darwin.so
#>   Expected in: flat namespace
#>  in /Users/vkv/anaconda3/lib/python3.6/site-packages/scipy/optimize/minpack2.cpython-36m-darwin.so

scipy似乎没有问题。我使用 Python 3.6.3 在命令行中运行了下面的脚本,它运行时没有错误并打印出来[ -1.09046105e-12 1.00000000e+00],这是正确的结果。

import numpy as np
from scipy import optimize

x = np.array([0, 1])
y = x
fit = lambda beta, x: beta[0] + beta[1] * x
resid = lambda beta, x, y: y - fit(beta, x)
beta_init = np.array([0.5, 0.5])
beta_hat, success = optimize.leastsq(resid, beta_init, args = (x, y), ftol = 1e-9)
print(beta_hat)

下面是关于我的 R 设置和 Python 设置的信息。

sessionInfo()
#> R version 3.6.3 (2020-02-29)
#> Platform: x86_64-apple-darwin15.6.0 (64-bit)
#> Running under: macOS Catalina 10.15.3
#> 
#> Matrix products: default
#> BLAS:   /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRblas.0.dylib
#> LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib
#> 
#> locale:
#> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#> [1] reticulate_1.13
#> 
#> loaded via a namespace (and not attached):
#>  [1] Rcpp_1.0.4      lattice_0.20-40 digest_0.6.25   grid_3.6.3     
#>  [5] jsonlite_1.6.1  magrittr_1.5    evaluate_0.14   highr_0.8      
#>  [9] rlang_0.4.5     stringi_1.4.6   Matrix_1.2-18   rmarkdown_2.1  
#> [13] tools_3.6.3     stringr_1.4.0   xfun_0.12       yaml_2.2.1     
#> [17] compiler_3.6.3  htmltools_0.4.0 knitr_1.28

py_config()
#> python:         /Users/vkv/anaconda3/bin/python
#> libpython:      /Users/vkv/anaconda3/lib/libpython3.6m.dylib
#> pythonhome:     /Users/vkv/anaconda3:/Users/vkv/anaconda3
#> version:        3.6.3 |Anaconda, Inc.| (default, Oct  6 2017, 12:04:38)  [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]
#> numpy:          /Users/vkv/anaconda3/lib/python3.6/site-packages/numpy
#> numpy_version:  1.13.3
#> 
#> python versions found: 
#>  /Users/vkv/anaconda3/envs/r-reticulate/bin/python
#>  /Users/vkv/anaconda3/bin/python
#>  /usr/bin/python
#>  /usr/bin/python3
#>  /usr/local/bin/python3

标签: pythonrscipyreticulate

解决方案


查看您获得的错误,如果您尝试直接从 python 运行相同的导入语句,我会徘徊您的计算机会说什么。我的猜测是你会遇到同样的错误:你的 anaconda 中的 scipy 安装有问题;

对我来说,这与网状无关。


推荐阅读