0

我尝试使用 PyCall.jl 库在 julia 中导入 python 的健身房模块。

为了做到这一点,我应用了以下内容:

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

另一方面,如果我直接尝试在 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
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
>>>
4

1 回答 1

1

看起来 PyCall 使用的 Python 版本与您安装的版本不同gym

要更改 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
于 2017-02-22T02:44:17.170 回答