簡體   English   中英

如何以編程方式以__main__(python -m path.to.file)的形式從Python模塊執行文件?

[英]How to execute a file from Python module as __main__ (python -m path.to.file) programatically?

我有幾個Python腳本(由於導入),必須使用python-m選項調用。

我想為他們制作快捷方式腳本,就像代理一樣。

例如,當用戶運行命令時

./train.py arg1 arg2 ...

該腳本應做與

python -m some.path.train arg1 arg2 ...

會做。

-m開關使用了一些技巧(例如sys.argv[0]設置為-c ); 不要試圖模仿。

相反,讓您的腳本和__main__.py使用相同的函數; 不要將所有功能都放在__main__.py

因此,在__main__.py ,執行以下操作:

import sys
from some.path.train import main

main(*sys.argv[1:])

在您的train.py腳本中執行完全相同的操作:

import sys
from some.path.train import main

main(*sys.argv[1:])

如果您必須將代碼放在__main__.py ,我仍將其train.py一個函數,然后可以為您的train.py腳本導入該函數:

from some.path.train.__main__ import main

您可以使用setuptools入口點從一個函數生成train控制台腳本:

setup(
    # other arguments here...
    entry_points={
        'console_scripts': [
            'train = some.path.train:main',
        ],
    }
)

或使用

'train = some.path.train.__main__:main',

如果將該函數放在__main__.py模塊中。

我找到了一個非常簡單的解決方案。

train.py我將代碼行放在下面:

from some.path import train

它沒有將__name__設置為'__main__'但是我從沒有檢查過,所以在我看來這不是問題。

暫無
暫無

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

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