2017-01-26 22 views
0

PyCall.jlライブラリを使用してjuliaの内部にpythonのジムモジュールをインポートしようとしています。それを作るためにOpenAI "gym"モジュールはJuliaのPyCallでインポートできません

は、私は以下を適用:

$ julia 
julia> using PyCall 
julia> gym = pyimport("gym") 
ERROR: PyError (:PyImport_ImportModule) <type 'exceptions.ImportError'> 
ImportError('No module named gym',) 

otherhandで、私は直接のpythonの中でそれをインポートしようとすると、私はエラーなしで

$ python 
>>> import gym 
>>> # no error here 

ことを行うことができました最後に、PyCallパッケージに問題があるかどうかをテストするために、別のPythonモジュール "sys"を同じ方法で呼び出そうとしました。それに問題はなかった:

$ julia 
    julia> using PyCall 
    julia> sys = pyimport("sys") 
    PyObject <module 'sys' (built-in)> 

私の問題について考えている人はいますか?

$python 
Python 2.7.12 |Anaconda 4.1.1 (64-bit)| (default, Jul 2 2016, 17:42:40) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
Anaconda is brought to you by Continuum Analytics. 
Please check out: http://continuum.io/thanks and https://anaconda.org 
>>> 
+0

恐らくそれはpython2とpython3のパッケージとは何か関係がありますか? 「ジム」はどのようにインストールされましたか? (これは標準のubuntuリポジトリにはありません) –

+0

おそらく[関連](https://github.com/JuliaPy/PyCall.jl/issues/48) – gobrewers14

+0

ありがとうございます。私は解決策を見つけました。まもなくPycallパッケージをビルドする前に、Juliaの内部にPython環境のパスを与える必要があります。私は長い答えをできるだけ早く書くつもりです。 – zwlayer

答えて

1

それはPyCallによって使用されているPythonのバージョンのように見えますが、あなたがgymをインストールしたバージョンとは異なります。

は、ここに私のPythonのバージョンです。

PyCallが使用しているPythonのバージョンを変更するには、別のPython実行可能パスを使用してパッケージを再構築します。

julia> ENV["PYTHON"] = "/usr/bin/python" # path to your Python executable 
"/usr/bin/python" 

julia> Pkg.build("PyCall") 
INFO: Building Conda 
INFO: Building PyCall 
INFO: PyCall is using /usr/bin/python (Python 2.7.12) at /usr/bin/python, libpython = libpython2.7 
INFO: /home/user/.julia/v0.5/PyCall/deps/deps.jl has been updated 
INFO: /home/user/.julia/v0.5/PyCall/deps/PYTHON has been updated 

あなたのPython実行ファイルが/usr/bin/pythonにあると仮定します。 UNIX上でそのパスを見つけるには、which pythonを実行してください。

~$ which python 
/usr/bin/python 
+0

いや、そうだよ。私は私の質問の下にコメントとして私の推論を置く – zwlayer

+0

@zwlayerああ、私は参照してください。 –

関連する問題