我有一个数组中的包名,试图用下面的<PACKAGE_NAME>代码执行“使用deps.jl”:
#! /opt/julia/julia-1.1.0/bin/Julia
packages =["MbedTLS","HTTP"]
for package in packages
try
("using "package)
cath err
println("$err")
end
end
正在执行的$/home/julia/deps.jl抛出错误“无法并置字符串文字”。请帮帮我!
我有一个字符串,例如z[2],我想在上下文中eval它,例如Dict(:z => 1:10)
做这件事最好的方法是什么?
我可以让它在某种程度上工作,但它非常慢。
function replace_expr(expr, d::Dict)
return expr
end
function replace_expr(s::Symbol, d::Dict)
get(d, s, s)
end
function replace_expr(expr::Expr, d::Dict)
return Expr(replace_expr(expr.head, d),
当我尝试以下代码片段时,我发现找不到变量i。为什么会这样呢? function evalMyExpr(expr,n)
for i in 1:n
eval(expr)
end
end
expr1 = Meta.parse("println(\"hello\")")
expr2 = Meta.parse("println(string(i))")
evalMyExpr(expr1,2) # ok
evalMyExpr(expr2,2) # UndefVarError: i not defined 请注意,如果我在宏中转换它,它可
我想要形成这样的表达式
julia> ex = :(a[$i,$j] + b[$i,$j])
因为我对写一个程序感兴趣,它能够写出一个方程系统,在这个系统中,用户只给出它们的结构,然后julia显式地写出相关的代码块。更广泛地说,我希望在表达式中嵌入函数,例如
julia> ex = :(a[$myfunc(i,j),$j] + b[$i,$j])
在评估第一行代码时,我得到
ERROR: UndefVarError: i not defined
in eval(::Module, ::Any) at ./boot.jl:226
另一方面,如果我写下
julia> ex =
我使用两个shell脚本来设置并行化。第一个脚本使用for循环将一个环境变量传递给第二个脚本,该脚本调用并行,运行一个julia脚本,再次传递变量。
第一个(test-loop.sh)脚本如下所示:
for i in `seq 1 99`;
do
export my_var=$i
bash ~/PATH/TO/FILE/test-par.sh
done
然后下一个文件(test-par.sh)如下所示:
#!/bin/bash
parallel julia ~/PATH/TO/FILE/bash-test.jl ::: {$my_var..100..1}
例如,如果用1替换$my_v
任何访问本地和全局作用域并操作这些范围的可能性。也许类似于这个python示例:
def foo():
x = 10
globals().update(locals()) # update global parameters
print(x) # continue using x
我想在不对变量单独使用global的情况下这样做。
我有一个模块,其中定义了一个枚举。
module myModule
@enum type A B B C D
end
type1 = myModule.A
现在,我想声明这个枚举类型的实例,但是我只有一个字符串来指定它的类型。我尝试了以下几点:
str = "B"
type2 = eval(:(myModule.Symbol($str)))
但我收到了一个我不太明白的警告信息:
警告:替换模块myModule。
type2的类型也只是一个Symbol。
例如,我有一个基本类型的抽象类型,我希望实现一个类型工厂,它在这个抽象类型下动态地创建具体类型,并使用用户输入参数给出的名称(和其他类型特征)。
abstract type AbstractFoo end
function TypeFactory(typename::String, supertype::DataType)
...
return ConcreteSubtype
end
函数TypeFactory使用typename和supertype参数,并创建一个属于supertype的具体类型,其名称与typename相同。
我知道这种类工厂在Python (例如)中实现
我开始尝试使用Julia进行并行处理。
在本例中,我使用的是@spawn宏,但使用remotecall_fetch函数时也有相同的错误。
以下是守则:
function count_proteins(fpath::String)
cnt::Int = 0
if !isfile(fpath)
write(Base.stderr, "FASTA not found!")
else
reader = open(FASTA.Reader, fpath)
for record in reader
我正在尝试构建一个函数,它将输出一个要分配给一个新内存函数的表达式。我可能误解了元编程的能力,但是,我试图构建一个生成数学系列并将其分配给如下函数的函数:
main.jl
function series(iter)
S = ""
for i in 1:iter
a = "x^$i + "
S = S*a
end
return chop(S, tail=3)
end
因此,这将构建模式,我将临时在repl中使用它:
julia> a = Meta.parse(series(4))
:(
这是我和Julia一起学习和实验的第二天。尽管我仔细阅读了关于元编程的文档(但可能不够仔细)和几个模拟线程。我仍然不知道如何在函数中使用它。我试着让下面的函数对一些数据的模拟更灵活:
using Distributions
function gendata(N,NLATENT,NITEMS)
latent = repeat(rand(Normal(6,2),N,NLATENT), inner=(1,NITEMS))
errors = rand(Normal(0,1),N,NLATENT*NITEMS)
x = latent+errors
end
通过这样做:
using Distr
我正在尝试开发一个Python脚本来部署在AWS Lambda上,它将处理调用,准备数据,然后将数据输入到Julia脚本中进行处理(与Pandas相比,我正在考虑Julia以加快执行时间)。我一直在本地使用PyJulia库,试图获得一个简单的测试示例,但遇到了问题。这种设置的问题是什么?
下面是简单的Python代码:
python_handler.py
from julia import core.Julia
x = Julia()
print(x.eval("julia_script.jl"))
下面是要调用的Julia脚本:
julia_script.jl
for
我尝试通过将t = range(0,stop=2*pi,length=101)乘以矩阵[1, 0]来创建一个矩阵数组,如下所示 A = t .* [1 ,0] 但这会产生错误ERROR: LoadError: DimensionMismatch("arrays could not be broadcast to a common size")。我希望将t的每个标量或元素与向量[1 , 0]的元素进行元素乘法(就t而言),本质上是执行元素的标量矩阵乘积。 我这样做的原因是因为我希望以后能够将A中找到的每个列向量与另一个常量矩阵M相乘。在Julia v1.1中如何做到这一点?
我有一个非常简单的问题。是否可以在Julia中按需加载模块。也就是说,是否可以在实际需要时加载模块,而不是在顶层加载“解析时”。
我想到的用例场景是,我有一些代码可以使用PyPlot进行一些绘图,但是代码并不总是被执行。
目前,这意味着我在顶层有一个像using PyPlot这样的语句,它需要相当长的时间来加载。
(是的,我知道,不应该经常让朱莉娅重新开始.但无论如何,这是一个恼人的问题)
是否有一种方法可以确保只在实际需要时加载PyPlot?最简单的方法是将using PyPlot包含在实际进行绘图的函数中。
function my_plot()
using PyPlot
p
我正尝试在我的系统上构建PyJulia,但在尝试通过Python安装时出现以下错误:
>>> import julia
>>> julia.install()
ERROR: LoadError: ArgumentError: Package Pkg not found in current path:
- Run `import Pkg; Pkg.add("Pkg")` to install the Pkg package.
Stacktrace:
[1] require(::Module, ::Symbol) at .\loading.
如何解析更多的代码行?
这是行之有效的:
julia> eval(parse("""print("O");print("K")"""))
OK
这是行不通的:
julia> eval(parse("""print("N");
print("O")"""))
ERROR: ParseError("extra token after end of expression")
Stacktrace:
[1] #pa
我正在尝试编写一个宏来调用带有关键字参数的函数(用于JuMP、NLexpressions和映射。这些函数只是用于访问数据库的函数。因此它们不表示数学运算)。
最小示例:
function foo1(; int::a=1)
a
end
function foo2(; int::a=1, int::b=2)
b
end
macro callfunc(f, keywordargs)
#function should be called here using symbol
#return values of f should be returned by macro
我正在尝试将函数f(x::Array{Float64, 1}) -> Array{Float64, 2}应用于Julia中的m x n数组中的每一行(如果相关的话,我使用的是v1.1 )。
现在,我希望可以简单地应用mapslices,如下所示:
# toy example of f
f = (x -> randn(length(x), length(x)))
A = randn(100, 50)
# intent: apply f to every row in A and collect the result into a 100 x 50 x 50 matrix.
resu
这是我在运行我的程序时得到的错误。我使用的是Ubuntu 16.04,安装了Python 2.7.12。我安装了anaconda,希望这能帮助解决这个问题,但它没有。
当我在julia内部运行Conda.list()时,我得到了"matplotlib“和"basemap”(我想包括mpl_toolkits ),当我在julia之外运行conda list时(bash?)我得到了一个更长的列表,其中还包含"matplotlib“和"basemap”。
sys:1: UserWarning: This call to matplotlib.use() has
我有一个像这样的宏
macro multishift(L...)
ex = :(0)
for d in L
ex = :($ex | 1 << Int32($d))
end
return ex
end
因此,@multishift(1,2)将扩展到0 | 1 << Int32(1) | 1 << Int32(2)。现在,我添加了一个类似这样的函数,并称之为:
f(L...) = @multishift(L...)
println(f(1,2))
这不管用。我会得到一个没有定义L的错误。我可以看到这里发生了什么
朱莉娅中有什么东西相当于ast包(抽象语法树)提供的Python的ast吗?
its (literal_eval)描述概述:
此函数仅计算Python文字结构:字符串、字节、数字、元组、列表、迪克、集、布尔值和None,并且可以用于从不受信任的源安全地计算字符串,而不需要自己解析值。它不能评估任意复杂的表达式,例如涉及运算符或索引。