与普通脚本相比,在python包中导入

2024-05-20 02:04:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编写了一个小python代码,它解析文件中的数据,然后使用Selenium将数据输入到一个网站,我正在尝试将其与一个脚本捆绑在一起。你知道吗

我已经能够将它捆绑到一个pip包中并上传它,但是当尝试运行它时,我得到了相同目录下模块的ImportError: No module named '<name>'。你知道吗

我的结构很简单

chessil_tourney_inserter/
    setup.py
    chessil_tourney_inserter/
        __init__.py (empty)
        chessil_tourney_inserter.py
        swiss98_text_parser.py
        command_line.py

以及设置.py也很基本:

from setuptools import setup

setup(name='chessil_tourney_inserter',
    .
    .
    .
    packages=['chessil_tourney_inserter'],
    zip_safe=False,

    install_requires = [
       'selenium'
    ],

    entry_points={
        'console_scripts': [
        'insertchessiltourney = chessil_tourney_inserter.command_line:main']
    })

现在command_line.main只需调用chessil_tourney_inserter

import chessil_tourney_inserter.chessil_tourney_inserter as cti
import sys

def main():
    if len(sys.argv) == 1:
        print("Usage: chessil_tourney_inserter.py *tournament name*")
        exit()
    cti.main();

if __name__ == "__main__":
    main()

chessil\u tourney\u inserter给了我一个导入错误:

import swiss98_text_parser

但是如果我尝试直接运行chessil_tourney_inserter.py,它就会工作,如果我将包名添加到导入中,它就会中断chessil_tourney_inserter.py

那么,我应该如何设置文件,以便在我自己直接运行文件时,以及在我尝试将其作为包导入或作为脚本运行时,导入都能正常工作呢?你知道吗


Tags: 文件数据textnamepyimport脚本main
1条回答
网友
1楼 · 发布于 2024-05-20 02:04:35

在顶部文件夹中也添加__init__.py。你知道吗

chessil_tourney_inserter/
setup.py
__init__.py
chessil_tourney_inserter/
    __init__.py (empty)
    chessil_tourney_inserter.py
    swiss98_text_parser.py
    command_line.py

有关详细信息,请参见What is __init__.py for?。你知道吗

相关问题 更多 >