最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何为类似于NodeJs的python项目设置开发人员环境

IT培训 admin 5浏览 0评论

如何为类似于NodeJs的python项目设置开发人员环境

背景故事我有一个python项目,它使用setuptools来构建源代码分发。 Pylint集成用于运行测试。我来自一个沉重的NodeJs背景。

问题在对代码进行更改之后,我在分发应用程序之前应该运行几个步骤。

  • 运行测试
  • 运行pylint
  • 清理build / dist目录
  • 使用setuptools和distutils构建源代码分发
  • 等等

还有其他一些要求,比如

  • 使用pip install -r requirements.txt安装软件包
  • 激活virtualenv
  • 触发预提交和预推git挂钩(尚未实现)

在NodeJs项目中,我可以在package.json文件中编写一组带有前后标签的shell命令,以一种非常好的方式完成工作。

目前对于python项目,我使用的是一个shell脚本,它以所需的顺序执行所需的步骤。我想到的另一个选择就是为了处理开发环境而拥有一个package.json。但它听起来并不像pythonic!

如何以优雅的pythonic方式自动执行这些步骤?

回答如下:

在对代码进行更改之后,我在分发应用程序之前应该运行几个步骤。

您可以通过将多个命令参数传递给setup.py脚本来链接多个操作:

$ python setup.py clean test lint sdist build_doc upload

如果工具不提供distutils命令,您可能需要其他依赖项,例如pylint没有,因此您需要setuptools-lint包才能使用python setup.py lint

您可以使用与Node项目类似的方式为命令集声明别名。在setup.cfg旁边创建一个setup.py文件并添加别名:

# setup.cfg
[aliases]
ci=clean test lint sdist build_doc upload

现在上面的命令与

$ python setup.py ci

至于其他要求,可能Pipenv是与node最相似的工具。它具有简洁的功能,如自动创建和激活项目特定的虚拟环境,从Pipfile安装软件包,锁定依赖项版本(类似于shrinkwrap命令)等。

Edit

您还可以编写自定义命令并将其绑定在安装脚本中。运行lsls -l命令示例:

from distutils.core import Command
from setuptools import setup


class Ls(Command):

    user_options = []

    def initialize_options(self):
        pass

    def finalize_options(self):
        pass

    def run(self):
        self.spawn(['ls', '-l'])


setup(
    name='spam',
    version='0.1',
    author='nobody',
    author_email='[email protected]',
    packages=[],
    cmdclass={'ls': Ls,},
)

现在运行python setup.py ls来调用新命令:

$ python setup.py ls
running ls
ls -l
total 8
drwx------  3 hoefling  wheel   96 16 Dez 19:47 
com.apple.launchd.1X84ONyuu4
drwx------  3 hoefling  wheel   96 16 Dez 19:47 
com.apple.launchd.XbjjBY44Mf
drwxr-xr-x  2 root      wheel   64 16 Dez 19:47 powerlog
-rw-r--r--  1 hoefling  wheel  405 16 Dez 19:50 setup.py

如何为类似于NodeJs的python项目设置开发人员环境

背景故事我有一个python项目,它使用setuptools来构建源代码分发。 Pylint集成用于运行测试。我来自一个沉重的NodeJs背景。

问题在对代码进行更改之后,我在分发应用程序之前应该运行几个步骤。

  • 运行测试
  • 运行pylint
  • 清理build / dist目录
  • 使用setuptools和distutils构建源代码分发
  • 等等

还有其他一些要求,比如

  • 使用pip install -r requirements.txt安装软件包
  • 激活virtualenv
  • 触发预提交和预推git挂钩(尚未实现)

在NodeJs项目中,我可以在package.json文件中编写一组带有前后标签的shell命令,以一种非常好的方式完成工作。

目前对于python项目,我使用的是一个shell脚本,它以所需的顺序执行所需的步骤。我想到的另一个选择就是为了处理开发环境而拥有一个package.json。但它听起来并不像pythonic!

如何以优雅的pythonic方式自动执行这些步骤?

回答如下:

在对代码进行更改之后,我在分发应用程序之前应该运行几个步骤。

您可以通过将多个命令参数传递给setup.py脚本来链接多个操作:

$ python setup.py clean test lint sdist build_doc upload

如果工具不提供distutils命令,您可能需要其他依赖项,例如pylint没有,因此您需要setuptools-lint包才能使用python setup.py lint

您可以使用与Node项目类似的方式为命令集声明别名。在setup.cfg旁边创建一个setup.py文件并添加别名:

# setup.cfg
[aliases]
ci=clean test lint sdist build_doc upload

现在上面的命令与

$ python setup.py ci

至于其他要求,可能Pipenv是与node最相似的工具。它具有简洁的功能,如自动创建和激活项目特定的虚拟环境,从Pipfile安装软件包,锁定依赖项版本(类似于shrinkwrap命令)等。

Edit

您还可以编写自定义命令并将其绑定在安装脚本中。运行lsls -l命令示例:

from distutils.core import Command
from setuptools import setup


class Ls(Command):

    user_options = []

    def initialize_options(self):
        pass

    def finalize_options(self):
        pass

    def run(self):
        self.spawn(['ls', '-l'])


setup(
    name='spam',
    version='0.1',
    author='nobody',
    author_email='[email protected]',
    packages=[],
    cmdclass={'ls': Ls,},
)

现在运行python setup.py ls来调用新命令:

$ python setup.py ls
running ls
ls -l
total 8
drwx------  3 hoefling  wheel   96 16 Dez 19:47 
com.apple.launchd.1X84ONyuu4
drwx------  3 hoefling  wheel   96 16 Dez 19:47 
com.apple.launchd.XbjjBY44Mf
drwxr-xr-x  2 root      wheel   64 16 Dez 19:47 powerlog
-rw-r--r--  1 hoefling  wheel  405 16 Dez 19:50 setup.py
发布评论

评论列表 (0)

  1. 暂无评论