簡體   English   中英

如何使用setuptools生成一個console_scripts入口點,該入口點調用`python -m mypackage`?

[英]How can I use setuptools to generate a console_scripts entry point which calls `python -m mypackage`?

我正努力成為一名優秀的Pythonista使用者,並按照我打算部署的PEP 338進行安裝。

我還嘗試使用setuptools entry_points{'console_scripts': ... }選項在python setuptools install時生成可執行腳本。

如何使用entry_points生成調用python -m mypackage的二進制文件(並傳遞* args,** kwargs)?

這是我沒有成功的一些嘗試:

setuptools(
...

(1)

entry_points=
       {'console_scripts': ['mypkg=mypkg.__main__'],},

(2)

entry_points=
       {'console_scripts': ['mypkg=mypkg.main'],},

(3)

entry_points=
       {'console_scripts': ['mypkg=python -m mypkg'],},

我一直在使用的主要資源:

如何使用entry_points生成調用python -m mypackage的二進制文件(並傳遞* args,** kwargs)?

我認為這是解決問題的錯誤方法。 您不希望腳本調用python -m mypackage ,但希望腳本具有與python -m mypackage相同的入口點

考慮以下簡單示例:

script_proj/
├── script_proj
│   ├── __init__.py
│   └── __main__.py
└── setup.py

和簡約的setup.py:

from setuptools import setup

setup(
    name="script_proj",
    packages=["script_proj"],
    entry_points = {
        "console_scripts": [
            "myscript = script_proj.__main__:main",
        ]
    }
)

__main__.py是一個虛擬模塊,包含main方法。

def main():
    print("Hello world!")

if __name__ == "__main__":
    main()

安裝后,您將擁有可執行的myscript ,它將在__main__.py調用main方法。 在此包裝設計中, python -m script_proj也調用相同的main方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM