关于pip:与普通脚本相比,在python包中导入

Importing in python packages compared to normal scripts

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

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

我的结构很简单

1
2
3
4
5
6
7
chessil_tourney_inserter/
    setup.py
    chessil_tourney_inserter/
        __init__.py (empty)
        chessil_tourney_inserter.py
        swiss98_text_parser.py
        command_line.py

而setup.py也是非常基本的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

1
2
3
4
5
6
7
8
9
10
11
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_Tourney_Inserter在以下方面给了我一个导入错误:

1
import swiss98_text_parser

但是,如果我尝试直接运行chessil_tourney_inserter.py,它会起作用,如果我在导入中添加包名称,它会破坏chessil_tourney_inserter.py

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


在顶部文件夹中也添加__init__.py

1
2
3
4
5
6
7
8
chessil_tourney_inserter/
setup.py
__init__.py
chessil_tourney_inserter/
    __init__.py (empty)
    chessil_tourney_inserter.py
    swiss98_text_parser.py
    command_line.py

看到什么了吗?更多信息。