» Python创建命令行程序grep » 2. 开发 » 2.7 添加 setup.py

添加 setup.py

在 Python 项目中,setup.py 文件通常用于定义项目的元数据和配置,以进行分发和打包。 它与 setuptools 库一起使用,提供有关项目的元信息,如名称、版本、作者、依赖关系以及其他打包和分发所需的信息。

setup.py:

from setuptools import setup, find_packages

setup(
    name='lr-grepy',
    version='0.1.0',
    packages=find_packages(),
    install_requires=[
        # 在此列出项目依赖项
    ],
    entry_points={
        'console_scripts': [
            'grepy=grepy_cli:main',
        ],
    },
    author='Literank',
    license='MIT',
    description='An example project\'s grep-like CLI app implemented in Python.',
    url='https://github.com/Literank/lr_grepy',
)

设置好 setup.py 后,你可以使用它执行各种任务,如在本地安装项目、创建分发包并将其上传到 Python Package Index (PyPI)。

要在本地安装项目,在终端中运行以下命令:

pip install . # 或 pip3 install .

这将安装该项目以及其依赖项。

尝试执行如下命令:

grepy

显示结果:

Traceback (most recent call last):
  File "/usr/local/bin/grepy", line 5, in <module>
    from grepy_cli import main
ModuleNotFoundError: No module named 'grepy_cli'

这是模块机制触发的 ModuleNotFoundError

可以通过将 grepy_cli.py 移动到 grepy/cli.py 来解决此问题,然后新的文件夹结构将如下所示:

.
├── LICENSE
├── README.md
├── grepy
│   ├── __init__.py
│   ├── cli.py
│   └── grep.py
├── requirements.txt
├── setup.py
└── tests
    └── test_grep.py

更新 setup.py

entry_points={
    'console_scripts': [
        'grepy=grepy.cli:main', # grepy_cli => grepy.cli
    ],
},

安装并再次尝试。

pip3 install .
grepy -n result grepy/cli.py

应该会看到类似如下内容:

35: result = grep_recursive(args.pattern,
38: result = grep(args.pattern, args.file_path, get_options(args))
41: print(grep_count(result))
43: print_result(result, args.line_number)
55: def print_result(result: Dict[str, MatchResults], line_number_option: bool):
57: file_count = len(result)
58: for file_path, lines in result.items():

恭喜🎉!目前为止一切顺利!

如果你想在本地安装项目并想让代码编辑实时生效以方便调试,可以使用 pip-e 标志。 这将以"可编辑"模式安装项目,它将创建到源代码的符号链接,而不是复制代码。

# -e 表示 "editable"(可编辑)
pip install -e .

注意: 在可编辑模式下,请确保你的 Python site-packages 目录在系统的 PATH 中。

上页下页