为了账号安全,请及时绑定邮箱和手机立即绑定

如何设置python中本地模块的路径以在CircleCI中识别?

如何设置python中本地模块的路径以在CircleCI中识别?

浮云间 2022-07-26 17:03:22
我正在构建一个 python 模块。为了定义它的路径,一个.pth文件被定义如下:# creation of the virtual environmentpython -v venv env# activation of the newly creation virtual environmentsource env/bin/activate为了设置我的模块的路径(我的模块位于 packages/regression_model/regression_model),我创建了这个.pth文件 env/lib/python3.7/site-packages/regression_model.pth,其中包含:# env/lib/python3.7/site-packages/regression_model.pth../../../../packages/regression_model现在,在我的项目中的任何地方,我都可以regression_model通过以下命令导入我的模块:import regression_model实际上我的目标是使用CircleCI来部署我的项目。CircleCI配置如下:version: 2jobs:  test_regression_model:    working_directory: ~/project    docker:      - image: circleci/python:3.7.6        environment: # environment variables for primary container          PYTHONPATH: ~/project/packages/regression_model:~/project/packages/ml_api    steps:      - checkout      - run:          name: Runnning tests          command: |            virtualenv venv            . venv/bin/activate            pip install --upgrade pip            pip install -r packages/regression_model/requirements.txt            chmod +x ./scripts/fetch_kaggle_dataset.sh            ./scripts/fetch_kaggle_dataset.sh            python packages/regression_model/regression_model/train_pipeline.py            py.test -vv packages/regression_model/testsworkflows:  version: 2  test-all:    jobs:      - test_regression_model我面临的问题是 CircleCI 表明我的模块无法导入Traceback (most recent call last):  File "packages/regression_model/regression_model/train_pipeline.py", line 4, in <module>    from regression_model import pipelineModuleNotFoundError: No module named 'regression_model'为了解决这个问题,regression_model必须完全按照在本地完成的方式定义该模块的路径。那么问题来了:如何在 CircleCI 中定义路径?我试图通过使用环境变量来做到这一点,PYTHONPATH但没有成功。有什么建议么?
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

我找到了解决方案。与在我的本地机器上手动完成的操作类似,我只定义了 2 个命令行来在 CircleCI 中完成它:


echo "../../../../packages/regression_model" >> env/lib/python3.7/site-packages/extra.pth

echo "../../../../packages/ml_api" >> env/lib/python3.7/site-packages/extra.pth

在完整的 yml 文件下方,以防万一它可以帮助其他人。


version: 2

jobs:

  test_regression_model:

    working_directory: ~/project

    docker:

      - image: circleci/python:3.7.6

    steps:

      - checkout

      - run:

          name: Runnning tests

          command: |

            virtualenv env

            . env/bin/activate

            pip install --upgrade pip

            pip install -r packages/regression_model/requirements.txt

            echo "../../../../packages/regression_model" >> env/lib/python3.7/site-packages/extra.pth

            echo "../../../../packages/ml_api" >> env/lib/python3.7/site-packages/extra.pth

            chmod +x ./scripts/fetch_kaggle_dataset.sh

            ./scripts/fetch_kaggle_dataset.sh

            sudo apt-get install unzip

            unzip  packages/regression_model/regression_model/datasets/house-prices-advanced-regression-techniques.zip -d packages/regression_model/regression_model/datasets/

            python packages/regression_model/regression_model/train_pipeline.py

            py.test -vv packages/regression_model/tests


workflows:

  version: 2

  test-all:

    jobs:

      - test_regression_model


查看完整回答
反对 回复 2022-07-26
  • 1 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信