在Python中,我有一个 模块 myModule.py,其中定义了一些函数和一个 main() ,它接受了一些命令行参数。
我通常从bash脚本中调用此main()。现在,我想将所有内容放入一个小 包装中
,因此我想也许可以将我简单的bash脚本转换为Python脚本并将其放入包装中。
因此,实际上如何 从 MyFormerBashScript.py 的main()函数 调用 myModule.py
的main()函数 ?我能做到吗?如何传递任何 参数 ?
这只是一个功能。导入并调用它:
import myModule
myModule.main()
如果需要解析参数,则有两个选择:
将它们解析为main()
,但sys.argv
作为参数传递(以下所有代码均在同一模块中myModule
):
def main(args):
# parse arguments using optparse or argparse or what have you
if name == ‘main’:
import sys
main(sys.argv[1:])
现在,您可以导入myModule.main(['arg1', 'arg2', 'arg3'])
其他模块并从其他模块调用。
有main()
接受已经解析(中再次全部代码参数myModule
模块):
def main(foo, bar, baz='spam'):
# run with already parsed arguments
if name == ‘main’:
import sys
# parse sys.argv[1:] using optparse or argparse or what have you
main(foovalue, barvalue, **dictofoptions)
然后导入并myModule.main(foovalue, barvalue, baz='ham')
在其他地方调用,并根据需要传入python参数。
这里的技巧是检测何时将模块用作脚本。当您运行python文件作为主脚本(python filename.py
)时,未import
使用任何语句,因此python调用该模块"__main__"
。但是,如果将相同的filename.py
代码视为模块(import filename
),则python会将其用作模块名称。在这两种情况下,__name__
都设置了变量,并针对该变量进行测试,以告诉您如何运行代码。
我是Python新手,我仍然无法理解为什么我们需要一个文件来导入模块。我已经看过了其他的问题和答案,比如这个。 让我困惑的是,我可以在没有的情况下导入我的模块,那么为什么我需要它呢? 以我为例,, index.py, 模块/hello/hello.py, 模块/Hello/HelloWorld.py, 后果 只需要这两条线, 没有任何。有人能解释为什么它是这样工作的吗? 如果是正确的方法,我应该在
之前我安装了pytorch,PIL,numpy。。。使用pip。之后我安装了python3。因此,ipython从python2切换到python3。我必须使用ipython2来启动python2内核。这些模块在ipython2中仍然可以很好地工作,但当我使用python、python2、python2.7运行python脚本时,它们都会引发以下问题: 没有名为PIL的模块(Numpy, torc
问题内容: 在Python中,是否可以为导入的模块定义别名? 例如: …因此具有别名“ short_name”。 问题答案: 也适用于
我正在用Python开发一个包。我使用虚拟环境。我在我的虚拟环境中的. pth路径中设置了模块的根路径,这样我就可以在开发代码和进行测试的同时导入包的模块(问题1:这是一个好方法吗?)。这工作正常(这里有一个例子,这是我想要的行为): 但是,如果我尝试使用PyTest,则会收到一些导入错误消息: 我有点困惑,看起来这表明了一个导入错误,但是Python做得很好,那么为什么PyTest会有问题呢?对
问题内容: 我正在尝试使用该软件包在R中导入python模块。该模块可以在这里找到。我克隆了存储库并运行成功。如果打开python shell,则可以导入。但是,当我尝试将其导入RStudio时,出现以下错误: 我在macOS Sierra版本10.12.6上并通过Anaconda安装了python 3.6。我也尝试过给出python的路径为: 当我从终端运行python时,我得到: 不确定pyt