我正在使用Ruby on Rails 3,我想在模块中移动一些自定义和共享代码.
提前致谢.
我想将子文件夹导入为模块.因此每个子文件夹都包含一个__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) 是否有直接的方法列出包中所有模块的名称,而不使用__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解释器具有-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__模块内执行".这是什么意思?
我希望有一个包含多个结构的模块,每个模块都在自己的文件中.以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的模块系统(开始时有点混乱)并没有提供一种明显的方法来实现这一点.它似乎只允许您将整个模块放在一个文件中.这不是质朴的吗?如果没有,我该怎么做?
假设我有一个名为的包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)
任何人都能解释我的错误观念吗?
是否有可能在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?
我将我的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) 我正在为open_flash_chart插件编写自定义包装器.它被放入/lib并作为模块加载ApplicationController.
但是,我有一些类层次结构或smth问题.
从任何控制器我可以访问open_flash_chart的功能OpenFlashChart,Line等等
但是,在/lib模块中的类中,它不起作用!
有任何想法吗?
我已经看到ES6模块的公共出口有以下两种方式:
// method 1
export var getAnswer = function () { return 'forty two'; };
// method 2
export default function () { return 'forty two'; };
Run Code Online (Sandbox Code Playgroud)
我很惊讶我用googlefu找不到答案.我只关心ES6模块,不是 CommonJS,RequireJS,AMD,Node等.
module ×10
python ×4
export ×2
import ×2
package ×2
class ×1
ecmascript-6 ×1
haskell ×1
javascript ×1
maven ×1
parent-child ×1
ruby ×1
rust ×1
subdirectory ×1
syntax ×1