当一个foo人在源目录中尝试导入模块时,会得到一个相当混乱的ImportError消息:ImportError: No module named foo.
如何轻松捕获此案例并返回更多信息,例如"请不要从源目录加载模块foo"?
有了__init__.py,我会开始:
try:
from _foo import *
except ImportError:
## check whether in the source directory...
Run Code Online (Sandbox Code Playgroud)
所以我想区分a的不同原因ImportError(例如,因为一个名为的模块foo根本没有安装),并检测它setup.py位于当前目录中的情况.这样做的优雅方式是什么?
如何获取特定包的版本号?
显而易见的方法是获取所有已安装软件包的字典,然后筛选出感兴趣的软件包:
pkgs = Pkg.installed();
pkgs["Datetime"]
Run Code Online (Sandbox Code Playgroud)
获取所有已安装软件包的列表非常慢,特别是如果有很多软件包.
如何获取Julia会话的导入/使用包列表?
Pkg.status()列出所有已安装的包.我对通过using ...或导入/加载的那些感兴趣import ...
它似乎whos()包含相关信息(名称和是否是模块).输出whos()可以在变量中捕获吗?
在朱莉亚,可以设置全球RNG的种子
srand(SEED)
Run Code Online (Sandbox Code Playgroud)
如何检索全局RNG的种子或当前状态,例如稍后再次检索?
目标是在任何给定的时间点获得RNG的状态,并在不同的会话中重新创建它,而不知道同时发生的初始种子或对RNG的所有调用.
例如,R允许访问当前种子
.Random.seed
Run Code Online (Sandbox Code Playgroud)
我希望朱莉娅能有同样的方式.
给定一个向量v = [1,..,n],我尝试计算所有唯一的 n 元素集并在 julia 中进行替换。
由于我想对较大的 n 值执行此操作,因此我正在寻找一种有效的解决方案,可能使用迭代器。
例如,让我们考虑v = [1, 2, 3]:这应该导致[1,1,1], [1,1,2], [1,1,3], [1,2,2], [1,2,3], [1,3,3], [2,2,2], [2,2,3], [2,3,3], [3,3,3]. 对于唯一,我的意思是如果[1,1,2]是一个解决方案,那么它的任何排列[1,2,1], [2,1,1]都不是。
我当前的解决方案基于partitions函数,但不允许我限制元素 [1,..,n] 的计算
for i in n:n^2
for j in partitions(i, n)
## ignore sets which exceed the range [1,n]
if maximum(j) <= n
## accept as solution
end
end
end
Run Code Online (Sandbox Code Playgroud)