2014-01-22 60 views
3

Enthought的Canopy和Julia與PyCall(我猜這與Canopy沒有更新distutils.sysconfig ??)有關。讓PyCall和Julia和Enthought的冠層一起工作

對此,有some discussion,通過將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運行蟒蛇可執行文件並執行:

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' 

最後:我需要擔心的cannot execute binary filePossible conflict ...部分?

回答

1

請參閱PyCall issue #42,這是本次討論的正確位置。問題有所改善,但Canopy/EPD在Windows上仍然存在一些運行時路徑問題,現在我推薦使用Anaconda Python。