Str*_*mer 18 python deployment setuptools pep
我正在尝试成为一名优秀的Pythonista,并按照我的计划对PEP 338进行部署.
我也在尝试python setuptools install使用setuptools entry_points{'console_scripts': ... }选项生成可执行脚本.
如何使用entry_points生成一个调用的二进制文件python -m mypackage(并传递*args,**kwargs)?
以下是我做过的一些尝试但没有成功:
setuptools(
...
Run Code Online (Sandbox Code Playgroud)
(1)
entry_points=
{'console_scripts': ['mypkg=mypkg.__main__'],},
Run Code Online (Sandbox Code Playgroud)
(2)
entry_points=
{'console_scripts': ['mypkg=mypkg.main'],},
Run Code Online (Sandbox Code Playgroud)
(3)
entry_points=
{'console_scripts': ['mypkg=python -m mypkg'],},
Run Code Online (Sandbox Code Playgroud)
我一直在使用的主要资源:
cel*_*cel 21
如何使用entry_points生成一个调用python -m mypackage的二进制文件(并传递*args,**kwargs)?
我认为这是查看问题的错误方法.您不希望脚本调用python -m mypackage,但您希望脚本具有相同的入口点python -m mypackage
考虑这个简单的例子:
script_proj/
??? script_proj
? ??? __init__.py
? ??? __main__.py
??? setup.py
Run Code Online (Sandbox Code Playgroud)
和minimalistic setup.py:
from setuptools import setup
setup(
name="script_proj",
packages=["script_proj"],
entry_points = {
"console_scripts": [
"myscript = script_proj.__main__:main",
]
}
)
Run Code Online (Sandbox Code Playgroud)
__main__.py是一个虚拟模块,包含该main方法.
def main():
print("Hello world!")
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
安装后,您有可执行文件myscript,它调用该main方法__main__.py.在这个包设计中python -m script_proj也调用相同的main方法.
| 归档时间: |
|
| 查看次数: |
6692 次 |
| 最近记录: |