PyCall 构建但没有任何效果
PyCall builds but nothing works
在构建和预编译 PyCall 之后,我尝试了一些 example code 来验证它的功能。不幸的是,我马上就遇到了错误。
julia> import Pkg
julia> Pkg.build("PyCall")
Building Conda ─→ `C:\Users\Student\.julia\packages\Conda\kLXeC\deps\build.log`
Building PyCall → `C:\Users\Student\.julia\packages\PyCall\ttONZ\deps\build.log`
julia> import PyCall
julia> math = pyimport("math")
ERROR: UndefVarError: pyimport not defined
Stacktrace:
[1] top-level scope at none:0
julia> py"""
import math
math.sin(math.pi / 4)
"""
ERROR: LoadError: UndefVarError: @py_str not defined
in expression starting at REPL[5]:1
julia> py"import math"
ERROR: LoadError: UndefVarError: @py_str not defined
in expression starting at REPL[6]:1
我在 Windows 10 x64 上使用 Julia 1.1.1 (2019-05-16)。我在网上没有看到任何关于这个特定问题的信息,现在我有点沮丧。
当你在 import
ing PyCall 时,你必须指定 pyimport()
函数的范围,方法是在它前面加上模块名称本身,即
julia> import PyCall
julia> math = PyCall.pyimport("math")
PyObject <module 'math' from '/usr/lib/python3.7/lib-dynload/math.cpython-37m-x86_64-linux-gnu.so'>
julia> math.sin(math.pi/4)
0.7071067811865475
或者,正如 Gomiero 在讨论中提到的,您的问题也可以通过使用 using PyCall
将函数引入本地范围来解决;
julia> using PyCall
julia> math = pyimport("math")
PyObject <module 'math' from '/usr/lib/python3.7/lib-dynload/math.cpython-37m-x86_64-linux-gnu.so'>
julia> math.sin(math.pi/4)
0.7071067811865475
Julia documentation 中有更多相关内容。
在构建和预编译 PyCall 之后,我尝试了一些 example code 来验证它的功能。不幸的是,我马上就遇到了错误。
julia> import Pkg
julia> Pkg.build("PyCall")
Building Conda ─→ `C:\Users\Student\.julia\packages\Conda\kLXeC\deps\build.log`
Building PyCall → `C:\Users\Student\.julia\packages\PyCall\ttONZ\deps\build.log`
julia> import PyCall
julia> math = pyimport("math")
ERROR: UndefVarError: pyimport not defined
Stacktrace:
[1] top-level scope at none:0
julia> py"""
import math
math.sin(math.pi / 4)
"""
ERROR: LoadError: UndefVarError: @py_str not defined
in expression starting at REPL[5]:1
julia> py"import math"
ERROR: LoadError: UndefVarError: @py_str not defined
in expression starting at REPL[6]:1
我在 Windows 10 x64 上使用 Julia 1.1.1 (2019-05-16)。我在网上没有看到任何关于这个特定问题的信息,现在我有点沮丧。
当你在 import
ing PyCall 时,你必须指定 pyimport()
函数的范围,方法是在它前面加上模块名称本身,即
julia> import PyCall
julia> math = PyCall.pyimport("math")
PyObject <module 'math' from '/usr/lib/python3.7/lib-dynload/math.cpython-37m-x86_64-linux-gnu.so'>
julia> math.sin(math.pi/4)
0.7071067811865475
或者,正如 Gomiero 在讨论中提到的,您的问题也可以通过使用 using PyCall
将函数引入本地范围来解决;
julia> using PyCall
julia> math = pyimport("math")
PyObject <module 'math' from '/usr/lib/python3.7/lib-dynload/math.cpython-37m-x86_64-linux-gnu.so'>
julia> math.sin(math.pi/4)
0.7071067811865475
Julia documentation 中有更多相关内容。