Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从终端使用python包_Python_Python 3.x_Terminal_Open Source - Fatal编程技术网

如何从终端使用python包

如何从终端使用python包,python,python-3.x,terminal,open-source,Python,Python 3.x,Terminal,Open Source,我创建了一个用于翻译文本或使用不同翻译器自动翻译的应用程序,并将其发布在pypi上。到目前为止,它工作得很好,我收到了一些很好的反馈和批评 现在我不是来宣传这个项目的。相反,我想问的是,如何或什么是使包从终端可用的正确方法。就像在我的示例中一样,项目名称是deep\u translator。我的目标是能够从终端使用它。正是这样: $ deep_translator translate --translator "google" --from "german"

我创建了一个用于翻译文本或使用不同翻译器自动翻译的应用程序,并将其发布在pypi上。到目前为止,它工作得很好,我收到了一些很好的反馈和批评

现在我不是来宣传这个项目的。相反,我想问的是,如何或什么是使包从终端可用的正确方法。就像在我的示例中一样,项目名称是deep\u translator。我的目标是能够从终端使用它。正是这样:

$ deep_translator translate --translator "google" --from "german" --to "english" --text="blabla"
我知道如果有人在他的机器上安装我的包,该包可能会添加到路径中。因此,它可以从终端访问,但这必须取决于操作系统,对吗

那么,正确的方法是什么呢。我正在使用python>=3.6,但这实际上是一个一般性问题,而不是特定于python的问题。提前感谢

您可以在
setup.py
文件中注册。安装包时,会在路径上放置一个二进制文件,该路径将调用已配置的函数。例如:

#setup.py
设置(
...
入口点={
'控制台脚本':['deep_translator=deep_translator.main_模块:main_func'],
}
...
)
这里的
main_module
是一个假设的模块,它承载一个将被调用的函数
main_func
。在此函数中,您可以设置并分析参数:

#main_module.py
def main_func():
parser=argparse.ArgumentParser()
parser.add_参数(…)
#这里有更多的论点
args=parser.parse_args()
#用args做东西
备选方案:
\uuuuu main\uuuuu.py
您还可以使用顶级的
\uuuu main\uuuu.py
模块,然后通过
-m
开关调用包:

python -m deep_translator <args-go-here>
python-m深\u转换器

我尝试使用argparse,但没有成功。无论我做什么,我总是会遇到这样的错误:错误:无法识别的参数:@basilisk好吧,您必须通过
add\u argument
注册您计划使用的所有参数。谢谢;)我已经设法让它工作了,但你的回答是一个很好的暗示;)