添加 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
中。