Python 从命令行在_umain__u; py.py中运行函数
我得到了以下_umain__uu.py文件:Python 从命令行在_umain__u; py.py中运行函数,python,Python,我得到了以下_umain__uu.py文件: def all(): print "hello world!" if __name__ == "__main__": print "bar" 如何从命令行运行函数all?以下各项似乎不起作用: python -c "import __main__; __main__.all()" python . 不允许我修改_umain__uu.py文件。 (这是针对我正试图参与的FLOSS项目)模块始终是包的一部分。导入时包括程序包名称:
def all():
print "hello world!"
if __name__ == "__main__":
print "bar"
如何从命令行运行函数all
?以下各项似乎不起作用:
python -c "import __main__; __main__.all()"
python .
不允许我修改_umain__uu.py文件。
(这是针对我正试图参与的FLOSS项目)模块始终是包的一部分。导入时包括程序包名称:
python -c 'from package.__main__ import all; all()'
演示:
$mkdir测试包
$touch testpackage/\uuuu init\uuuuu.py
$cat testpackage/\uuuuu main\uuuuuuuu.py
>def all():
>打印“你好,世界!”
>如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
>全部()
>EOF
$python测试包
你好,世界!
$python-c'来自testpackage.\uuuu main\uuuuu导入全部;全部()
你好,世界!
您可能不想这样做,但如果工作目录中有\uuuu main\uuuuu.py
:
python -c "import imp; trick = imp.load_source('__main__', './__main__.py'); trick.all()"
如果您的文件位于类似foo/\uuuuuu main\uuuuuuu.py
的目录中,则可以执行以下操作
python -c "import imp; trick = imp.load_source('foo.__main__', 'foo/__main__.py'); trick.all()"
另请参见和如果使用
setup.py
安装此软件包,则可以为all
功能添加命令行入口点:
from setuptools import setup
setup(
name='mypackage',
version='1.0',
packages=['mypackage'],
entry_points={
'console_scripts': [
'mypackage_all = mypackage.__main__:all',
],
},
)
运行python setup.py develope
或python setup.py install
后,您将能够使用mypackage\u all
调用all
函数:
$ mypackage_all
hello world!
它应该说foo()
而不是all()
?你是对的,它是all(),而不是foo()。我以为这个名字不重要。我将编辑我的问题。
$ mypackage_all
hello world!