让PyCall在Julia和Enthought's Canopy中正常工作

3

在Enthought's Canopy与Julia实现PyCall时存在一些奇怪的问题(我猜这与Canopy没有更新distutils.sysconfig有关?)。

关于此问题,有一些讨论,通过将PyCall指向正确的共享库来解决它。

如何使此更改永久(如何更改distutils.sysconfig)?

一些输出:

julia> using PyPlot
ERROR: could not load module python: dlopen(python.dylib, 9): image not found
 in pyinitialize at /Users/bdhammel/.julia/PyCall/src/PyCall.jl:422
 in pyimport at /Users/bdhammel/.julia/PyCall/src/PyCall.jl:105
 in include at boot.jl:238
 in include_from_node1 at loading.jl:114
 in reload_path at loading.jl:140
 in _require at loading.jl:58
 in require at loading.jl:43
at /Users/bdhammel/.julia/PyPlot/src/PyPlot.jl:32

julia> using PyCall

julia> pyinitialize("/Users/bdhammel/Library/Enthought/Canopy_64bit/System/lib/libpython2.7.dylib")
/Users/bdhammel/Library/Enthought/Canopy_64bit/System/lib/libpython2.7.dylib: /Users/bdhammel/Library/Enthought/Canopy_64bit/System/lib/libpython2.7.dylib: cannot execute binary file

julia> using PyPlot
Warning: Possible conflict in library symbol dtrtri_
Warning: Possible conflict in library symbol dgetri_
Warning: Possible conflict in library symbol dgetrf_

julia> plot([1,2])
1-element Array{Any,1}:
 PyObject <matplotlib.lines.Line2D object at 0x115b95090>

它绘制了这条线。

我希望能够设置它正常工作,而不必进行pyinitialize的操作。

来自链接讨论:
PyCall运行python可执行文件并执行:

import distutils.sysconfig
print(distutils.sysconfig.get_config_var('LDLIBRARY'))
print(distutils.sysconfig.get_config_var('PYTHONFRAMEWORKPREFIX'))

这些路径存储在哪里,我应该改变什么?
这些命令在Python中的输出:
In [1]: import distutils

In [2]: print(distutils.sysconfig.get_config_var('LDLIBRARY'))
Python.framework/Versions/2.0.0.dev-f1c6cfc/Python

In [3]: print(distutils.sysconfig.get_config_var('PYTHONFRAMEWORKPREFIX'))
/Library/Frameworks

In [4]: distutils.__file__
Out[4]: '/Applications/Canopy.app/appdata/canopy-1.0.3.1262.macosx-x86_64/Canopy.app/Contents/lib/python2.7/distutils/__init__.pyc'

最后:我需要担心“无法执行二进制文件”或“可能发生冲突”的部分吗?
1个回答

1

请见PyCall问题#42,这是讨论此问题的正确位置。虽然情况有所改善,但Windows上使用Canopy/EPD仍存在一些运行时路径问题,目前我建议使用Anaconda Python。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接