【问题标题】:How can I have my PyPI package run by just importing it, and not importing anything from it?如何通过仅导入 PyPI 包而不从其中导入任何内容来运行我的 PyPI 包?
【发布时间】:2020-08-17 03:31:36
【问题描述】:

我已经创建了我的第一个 PyPI 包,但是有一个问题。我希望用户能够导入名为 chess-graph 的包,然后立即运行它。

例如,用户可以输入import chess_graph。然后,他们可以直接使用chart.graph(<link-to-file>) 运行程序。

但是,当我尝试以这种方式运行包时,我无法这样做。相反,我必须输入import chess_graph(在运行pip install chess-graph 之后),然后输入from chess_graph import chart.

我有什么办法可以将图表与 chess_graph 一起导入?这是我的目录的样子:

/pypi_chess

    /chess_graph

        __init__.py

        chart.py

        game_parser.py

    LICENSE

    README.md

    setup.py

我的猜测是我可以在__init__.py 文件中导入图表,但这不起作用。

我的__init__.py 文件如下所示:

from chess_graph import chart

print('test print')

当我运行import chess_graph 时,它会打印test print,但如果我尝试直接输入chart.graph(file),它会显示name: chart is not defined.

我知道它正在导入它,但是,因为图表是一个大文件,导入 chess_graph 需要几秒钟。

如何仅通过导入包来运行图表文件?

【问题讨论】:

    标签: python pip python-import pypi


    【解决方案1】:

    有了这样的__init__.py,你可以这样做:

    import chess_graph
    
    ...
    
    chess_graph.chart.graph(file)
    

    【讨论】:

    • 感谢您的回答,但我希望我可以做一些更像简单的 chart.graph() 或 chess_graph.graph() 的事情,以简化用户体验。有什么办法吗?
    • 不,因为您需要以某种方式将 chart 变量带入作用域,方法是导入它 (import chart) 或初始化它 (chart = ...)。如果不执行其中任何一项,chart 将不存在于当前范围内。
    猜你喜欢
    • 2016-07-17
    • 2021-02-26
    • 2019-11-18
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 2023-01-04
    相关资源
    最近更新 更多