标签: module

如何使用Ruby on Rails 3创建和使用模块?

我正在使用Ruby on Rails 3,我想在模块中移动一些自定义和共享代码.

  1. 我应该用什么语法来编写模块代码?
  2. 在我的应用程序的哪个文件夹中,我必须放置模块文件?
  3. 我如何将该模块包含在一个或多个控制器类中?
  4. 如果有的话,我还需要在我的应用程序中的任何位置使用自定义模块吗?
  5. 如何从我的应用程序中调用模块中的方法?

提前致谢.

module ruby-on-rails-3

90
推荐指数
1
解决办法
7万
查看次数

从子文件夹导入模块

我想将子文件夹导入为模块.因此每个子文件夹都包含一个__init__.py.我的文件夹结构是这样的:

src\
  main.py
  dirFoo\
    __init__.py
    foofactory.py
    dirFoo1\
      __init__.py
      foo1.py
    dirFoo2\
      __init__.py
      foo2.py
Run Code Online (Sandbox Code Playgroud)

在我的主脚本中我导入

from dirFoo.foofactory import FooFactory
Run Code Online (Sandbox Code Playgroud)

在这个工厂文件中,我包含子模块:

from dirFoo1.foo1 import Foo1
from dirFoo2.foo2 import Foo2
Run Code Online (Sandbox Code Playgroud)

如果我调用我的foofactory我得到错误,那python无法导入子模块foo1和foo2:

Traceback (most recent call last):
  File "/Users/tmp/src/main.py", line 1, in <module>
from dirFoo.foofactory import FooFactory
  File "/Users/tmp/src/dirFoo/foofactory.py", line 1, in    <module>
from dirFoo1.foo1 import Foo1
    ImportError: No module named dirFoo1.foo1
Run Code Online (Sandbox Code Playgroud)

python import module subdirectory

89
推荐指数
4
解决办法
11万
查看次数

是否有一种标准的方法来列出包中的Python模块的名称?

是否有直接的方法列出包中所有模块的名称,而不使用__all__

例如,给定此包:

/testpkg
/testpkg/__init__.py
/testpkg/modulea.py
/testpkg/moduleb.py
Run Code Online (Sandbox Code Playgroud)

我想知道是否有标准或内置方式来做这样的事情:

>>> package_contents("testpkg")
['modulea', 'moduleb']
Run Code Online (Sandbox Code Playgroud)

手动方法是遍历模块搜索路径以查找包的目录.然后可以列出该目录中的所有文件,过滤掉唯一命名的py/pyc/pyo文件,剥离扩展名,然后返回该列表.但对于模块导入机制已在内部进行的操作,这似乎是相当多的工作.该功能是否暴露在任何地方

python module package

87
推荐指数
4
解决办法
7万
查看次数

是否使用-m选项执行Python代码

python解释器具有-m 模块选项"将库模块模块作为脚本运行".

使用此python代码a.py:

if __name__ == "__main__":
    print __package__
    print __name__
Run Code Online (Sandbox Code Playgroud)

我测试python -m a得到了

"" <-- Empty String
__main__
Run Code Online (Sandbox Code Playgroud)

python a.py回报

None <-- None
__main__
Run Code Online (Sandbox Code Playgroud)

对我来说,这两个调用似乎是相同的,除非__package__在使用-m选项调用时不是None.

有趣的是,python -m runpy a我得到了与python -m a编译的python模块相同的a.pyc.

这些调用之间的(实际)区别是什么?他们之间有什么利弊?

此外,David Beazley的Python Essential Reference将其解释为"-m选项将库模块作为脚本运行,该脚本在执行主脚本之前在__main__模块内执行".这是什么意思?

python module package

87
推荐指数
3
解决办法
6万
查看次数

将模块拆分为多个文件

我希望有一个包含多个结构的模块,每个模块都在自己的文件中.Math模块为例:

Math/
  Vector.rs
  Matrix.rs
  Complex.rs
Run Code Online (Sandbox Code Playgroud)

我希望每个结构都在同一个模块中,我将从我的主文件中使用它,如下所示:

use Math::Vector;

fn main() {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

然而,Rust的模块系统(开始时有点混乱)并没有提供一种明显的方法来实现这一点.它似乎只允许您将整个模块放在一个文件中.这不是质朴的吗?如果没有,我该怎么做?

module rust

87
推荐指数
6
解决办法
3万
查看次数

如何从另一个模块更改模块变量?

假设我有一个名为的包bar,它包含bar.py:

a = None

def foobar():
    print a
Run Code Online (Sandbox Code Playgroud)

并且__init__.py:

from bar import a, foobar
Run Code Online (Sandbox Code Playgroud)

然后我执行这个脚本:

import bar

print bar.a
bar.a = 1
print bar.a
bar.foobar()
Run Code Online (Sandbox Code Playgroud)

这就是我的期望:

None
1
1
Run Code Online (Sandbox Code Playgroud)

这是我得到的:

None
1
None
Run Code Online (Sandbox Code Playgroud)

任何人都能解释我的错误观念吗?

python import module

85
推荐指数
3
解决办法
4万
查看次数

Haskell导出当前模块带有额外的导入模块

是否有可能在Haskell中编写一个模块,除了导出内部可见的内容之外,还会重新导出模块?

让我们考虑以下模块:

module Test where
import A

f x = x
Run Code Online (Sandbox Code Playgroud)

此模块导出内部定义的所有内容,因此它会导出f但不会重新导出从中导入的任何内容A.

另一方面,如果我想重新导出模块A:

module Test (
    module A,
    f
) where
import A

f x = x
Run Code Online (Sandbox Code Playgroud)

有没有办法重新导出A和导出定义的所有内容,Test而无需显式编写在其中定义的每个函数Test

haskell module export

85
推荐指数
1
解决办法
1万
查看次数

Maven:不可解析的父母POM

我将我的maven项目设置为1个shell项目和4个子模块.当我尝试构建shell时.我明白了:

[INFO] Scanning for projects...
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]   
[ERROR] The project module1:1.0_A0 (C:\module1\pom.xml) has 1 error
[ERROR] Non-resolvable parent POM: Failure to find shell:pom:1.0_A0 in http://nyhub1.ny.ssmb.com:8081/nexus/content/repositories/JBoss/ was cached in the local repository, resolution will not be reattempted until the update interval of jboss has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 5, column 11 -> [Help 2]
Run Code Online (Sandbox Code Playgroud)

如果我尝试构建一个单独的模块,我得到相同的错误只替换module1,无论它是什么模块.

让他们都在他们的poms中引用父母.

<parent>
    <artifactId>shell</artifactId>
    <groupId>converter</groupId>
    <version>1.0_A0</version>
</parent> …
Run Code Online (Sandbox Code Playgroud)

build-automation module parent-child maven

83
推荐指数
5
解决办法
22万
查看次数

Rails/lib模块和

我正在为open_flash_chart插件编写自定义包装器.它被放入/lib并作为模块加载ApplicationController.

但是,我有一些类层次结构或smth问题.

从任何控制器我可以访问open_flash_chart的功能OpenFlashChart,Line等等

但是,在/lib模块中的类中,它不起作用!

有任何想法吗?

ruby module ruby-on-rails class

81
推荐指数
3
解决办法
10万
查看次数

ES6 + javascript模块导出选项

我已经看到ES6模块的公共出口有以下两种方式:

// method 1
export var getAnswer = function () { return 'forty two'; };

// method 2
export default function () { return 'forty two'; };
Run Code Online (Sandbox Code Playgroud)
  1. 这两个都有效吗?
  2. 如果是这样,为什么它们都存在?
  3. 是否有其他有效的模块导出选项使用ES6语法?

我很惊讶我用googlefu找不到答案.我关心ES6模块,不是 CommonJS,RequireJS,AMD,Node等.

javascript syntax module export ecmascript-6

80
推荐指数
2
解决办法
3万
查看次数