标签: pybuilder

单元测试包Maven风格约定

我想用单元测试和包创建一个pybuilder项目.作为一个例子,修改了简单的python应用程序示例,将"helloworld"移动到打包"hello".

我的第一直觉是将包结构与"main"和"unittest"源相匹配:

+---src
   +---main
   |   \---python
   |       \---hello
   |               helloworld.py
   |               __init__.py
   |
   \---unittest
       \---python
           \---hello
                   helloworld_tests.py
                   __init__.py
Run Code Online (Sandbox Code Playgroud)

由于冲突的"hello"包,这不起作用.

BUILD FAILED - 'module' object has no attribute 'helloworld_tests'
Run Code Online (Sandbox Code Playgroud)

我看到pybuilder本身只是跳过单元测试中的顶级pybuilder包,但如果有多个顶级包则不会这样做.

我的第二个猜测是为单元测试创​​建额外的顶级包.

\---unittest
    \---python
        \---tests
            |   __init__.py
            \---hello
                    helloworld_tests.py
                    __init__.py
Run Code Online (Sandbox Code Playgroud)

有没有更好的解决方案或已建立的约定如何在包中组织python测试?

python unit-testing coding-style directory-structure pybuilder

7
推荐指数
1
解决办法
211
查看次数

我如何配置pybuilder?

如何在pybuilder中更改配置,以及pybuilder中的配置如何工作?

如何找出可能的配置值及其默认值,如何在commmmandline/in settings files中为每个项目/每个模块/覆盖或更改它们?哪些是设置文件?

python pybuilder

4
推荐指数
1
解决办法
2312
查看次数

Pybuilder - 非python文件未打包

我目前的项目是在 python 中。对于构建包生成 + 单元测试运行,我正在使用Pybuilder实用程序,它非常酷。我使用了车轮分布在其他系统中安装模块。

存在一个配置文件,应用程序从中读取某些设置。settings.ini 文件在以下路径中,

PROJECT-ROOT
     |---- src
            |-main
                |-python
                     |- foo
                         |- conf
                         |   |- settings.ini
                         |
                         |-test.py
                         |-access.py
Run Code Online (Sandbox Code Playgroud)

pybuilder 自动从 build.py 脚本创建 setup.py。问题是二进制轮分发没有打包非 python 文件(*.ini 文件)。在搜索 SO 帖子时,获得诸如在 MANIFEST.mf 中添加之类的信息将解决此问题。但是在添加的同时

 project._manifest_include_directory('foo/conf', ('*.ini',))
Run Code Online (Sandbox Code Playgroud)

它只foo/conf/settings.ini在 sdist 中更新,而不是在 bdist(wheel) 上更新。我希望轮文件在 conf/ 目录中包含 settings.ini。在谷歌上搜索,得到了添加的信息 package_data在 setup.py字段将解决此问题的信息。但是使用 Pybuilder 的 build.py,我无法成功执行此操作。

任何人都可以帮我解决这个问题吗?

distutils python-3.x pybuilder

1
推荐指数
1
解决办法
797
查看次数

如何从 Gradle 激活虚拟环境?

我的 gradle.build 文件中有以下 exec 命令。

exec {
        workingDir System.getProperty("user.dir")
        commandLine 'python3.6', 'buildscript.py'
    }
exec {
    workingDir System.getProperty("user.dir")
    commandLine 'python3.6', '-m', 'virtualenv', 'env'
}


exec {
    workingDir System.getProperty("user.dir")
    commandLine 'source', 'env/bin/activate'
}

exec {
    workingDir System.getProperty("user.dir")
    commandLine 'pip3.6', 'install', 'pybuilder'
}

exec {
    workingDir System.getProperty("user.dir")
    commandLine 'pyb', '-E', 'env', '-X'
}
Run Code Online (Sandbox Code Playgroud)

这些都在执行 gradle build 时运行的构建任务中。理论上,这应该运行我创建的一个脚本,该脚本创建构建我的 python 程序所需的所有文件,然后它应该创建一个虚拟环境,激活它,在其中安装 pybuilder,然后运行 ​​pybuilder。然而,命令:

exec {
        workingDir System.getProperty("user.dir")
        commandLine 'source', 'env/bin/activate'
    }
Run Code Online (Sandbox Code Playgroud)

看来是失败了 它声称该目录/文件不存在,尽管它通过命令行工作。我不知道为什么会这样。这样做的全部目的是强制 Pybuilder 将我的程序依赖项安装到我创建的虚拟环境中。pyb -E env 从技术上讲应该为我激活虚拟环境,但无论出于何种原因,它都没有将我的依赖项安装到该虚拟环境。在我们的 Jenkins 节点上,这是一个问题,因为我们不希望它们全局安装,更不用说,我无论如何都没有 root 用户权限。

任何帮助将不胜感激。如果您知道另一种让 Pybuilder 正常工作的方法,那就同样好。

python macos virtualenv gradle pybuilder

1
推荐指数
1
解决办法
2957
查看次数