Sicarator
数据项目的即时设置与最佳质量!
Sicarator 是一个用于数据科学项目的命令行界面生成器。它基于 Yeoman 构建,并由 Sicara 维护。
要了解更多关于 Sicarator 的背景故事和理念,可以阅读这篇博客文章。
生成项目的主要组件
- Python 开发环境,包含:
- Poetry 用于依赖管理
- Pytest 用于测试
- Ruff 用于静态分析和代码格式化
- Mypy 用于类型检查
- Pre-commit 用于 git 钩子
- 您选择的持续集成:
- (可选) API:
- (可选) 使用 DVC 和 Typer 进行数据版本控制和管道
- (可选) 使用 Streamlit 进行数据可视化
- (可选) 使用 DVC + Streamlit 进行实验跟踪
要求
Pyenv
安装 pyenv 以管理您的 Python 版本和虚拟环境:
curl -sSL https://pyenv.run | bash
如果您使用 MacOS 并在使用 PyEnv 安装 Python 时遇到错误,请参考这个评论
Poetry
安装 Poetry 以管理您的依赖项和工具配置:
curl -sSL https://install.python-poetry.org | python - --version 1.7.0
如果您之前没有安装任何 Python 版本,您可能需要先安装一个并将其设置为默认 Python 版本,然后再安装 Poetry:
pyenv update # 获取最新的 Python 版本列表
pyenv install 3.11 # 安装最新的 Python 3.11.x
pyenv global 3.11 # 设置新的全局默认 Python 版本
Node.js
如果您还没有,请安装稳定版本的 Node.js(v18.x.x)。
Sicarator 实际上是一个 Yeoman 生成器,它是一个 Node.js
模块。
对于 Linux:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
Yeoman
安装 Yeoman:
npm install -g yo
使用方法
-
在生成新项目之前,请确保重新运行以下命令安装最新版本的
Sicarator
:npm install -g sicara/sicarator
-
使用以下命令生成新项目:
yo sicarator
故障排除
我没有正确的权限来安装 yeoman
示例错误:
npm ERR! code EACCES
npm ERR! syscall rename
npm ERR! path /usr/lib/node_modules/generator-sicarator
npm ERR! dest /usr/lib/node_modules/.generator-sicarator-cELCsz5l
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied, rename '/usr/lib/node_modules/generator-sicarator' -> '/usr/lib/node_modules/.generator-sicarator-cELCsz5l'
...
解决方案:给自己 npm 和 node_modules 的所有权:
sudo chown -R $(whoami) ~/.npm
sudo chown -R $(whoami) /usr/lib/node_modules # 或 /usr/local/lib/node_modules,取决于 node 模块的安装位置
我有正确的 git 凭据,但安装时出现 git 错误
示例错误:
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
解决方案:您可能使用 sudo
运行安装,这不会使用相同的 git 凭据。
请参考上面的解决方案,使用您当前的用户配置文件安装项目。
为项目做贡献
安装项目
-
使用以下命令安装项目:
git clone git@github.com:sicara/sicarator.git
然后安装依赖项
npm install
-
要能够运行当前的开发版本,您可以在项目目录中使用以下命令:
npm link
- 下次运行
yo sicarator
时,将使用开发版本。 - 如果您想回到生产版本,可以重新运行:
npm install -g sicara/sicarator
- 下次运行
开发工具
-
要进行调试,可以运行:
npx --node-options="--inspect" yo sicarator
-
要运行代码检查器(eslint),可以使用:
npm run lint
-
要运行测试,可以使用:
npm test