Python 3.x 如何在PyBuilder生成的包中包含数据集并使其可用
我正在试用PyBuilder,因为我正在寻找一种更有组织性、更面向生产的方法来开发数据科学项目 到目前为止,我已经创建了一个PyBuilder项目,其结构如下(文件夹为可读性而大写):Python 3.x 如何在PyBuilder生成的包中包含数据集并使其可用,python-3.x,pybuilder,Python 3.x,Pybuilder,我正在试用PyBuilder,因为我正在寻找一种更有组织性、更面向生产的方法来开发数据科学项目 到目前为止,我已经创建了一个PyBuilder项目,其结构如下(文件夹为可读性而大写): build.py和setup.py是PyBuilder生成的文件。 .env包含虚拟环境(即:Python 3.7)。 src\main和src\test具有通常的结构,不同的是它们都包含一个新的fixtures文件夹(很像Java中的resources)。如果您想知道,src\test看起来像是这样,因为: p
build.py
和setup.py
是PyBuilder生成的文件。
.env
包含虚拟环境(即:Python 3.7)。
src\main
和src\test
具有通常的结构,不同的是它们都包含一个新的fixtures
文件夹(很像Java中的resources
)。如果您想知道,src\test
看起来像是这样,因为:
project.set_property("dir_source_unittest_python", "src/test/python")
project.set_property("unittest_module_glob", "test_*")
我的意图如下:
FIXTURES = os.path.join(os.path.dirname(__file__), '..', 'fixtures')
...
with open(os.path.join(FIXTURES, 'data.csv'), 'r') as file:
...
包含一个脚本,该脚本调用run.py
中的代码来预测明天的天气code.py
包含在code.py
中加载数据集的代码,并构建提供给定日期天气预测的模型data.csv
包含训练天气预报模型所需的data.py
中的历史数据code.py
包含单元测试,以确保test\u code.py
中的模型和实用程序功能按预期工作code.py
包含用于测试values.py
的输入值和预期结果code.py
code.py
中的“我的代码”通过定义FIXTURES文件夹访问data.csv
,如下所示:
FIXTURES = os.path.join(os.path.dirname(__file__), '..', 'fixtures')
...
with open(os.path.join(FIXTURES, 'data.csv'), 'r') as file:
...
我可以在IDE中成功运行脚本run.py
,生成预测
当我试图生成一个包来与同事共享预测器时,我发现src\main\fixtures
文件夹没有被复制。经过一些研究(),我设法通过以下方式修正了这一点:
fixtures
文件夹移动到python
project.include_文件(“lib/python3.7/site packages/fixtures”,“fixtures/*.csv”)
到build.py
fixtures
最初的位置。我注意到,run.py
即使安装成功终止(pyb install
)也无法执行。原因是无法成功定位data.csv
:
...
FileNotFoundError: [Errno 2] File b'/Users/stefano/Workspace/project/.env/lib/python3.7/site-packages/../fixtures/data.csv' does not exist: b'/Users/stefano/Workspace/project/.env/lib/python3.7/site-packages/../fixtures/data.csv'
有人知道如何将fixtures
文件夹保存在src\main
(而不是src\main\python
)中吗?
还有,有人知道如何在安装包后发现像data.csv这样的文件吗?
提前感谢您的帮助
注意:请注意,如果data.csv
相当大,使用此结构的解决方案可能不是最方便的解决方案。我最终发现了一份原始文档,其中建议使用以下适合我的解决方案:
use_plugin("copy_resources")
...
@init
def set_properties(project):
project.get_property("copy_resources_glob").append("src/main/fixtures/*.csv")
project.set_property("copy_resources_target", "$dir_dist")
project.install_file("lib/python3.7/fixtures", "src/main/fixtures/data.csv")
注意:在最后一个命令中,由于某些原因,无法使用通配符(
project.install_文件(“lib/python3.7/fixtures”、“src/main/fixtures/*.csv”)
。您在哪里可以找到这个问题?我也在同一条船上@Stefano BragagliaHi Gopinath,见下面我的答案。它对我有用。。。