【问题标题】:How can this reticulate/scipy problem be fixed?如何解决这个网状/scipy 问题?
【发布时间】:2020-07-19 06:06:03
【问题描述】:

我用这行代码创建了一个名为 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

【问题讨论】:

    标签: python r scipy reticulate


    【解决方案1】:

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

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

    【讨论】:

    • 我修改了我的帖子以表明 SciPy 在网状结构之外也能正常工作。
    • 正如您在 py_config() 结果中显示的那样,这与从 reticulate 和命令行运行的 python 不同。尝试使用reticulate::use_python("/usr/local/bin/python3")强制reticulate使用与命令行相同的python;
    猜你喜欢
    • 2014-10-07
    • 1970-01-01
    • 2019-04-20
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多