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

如何设置python中要在CircleCI中识别的本地模块的路径?,python,circleci,Python,Circleci,我正在构建一个python模块。为了定义其路径,.pth文件定义如下: version: 2 jobs: test_regression_model: working_directory: ~/project docker: - image: circleci/python:3.7.6 environment: # environment variables for primary container PYTHONPATH: ~

我正在构建一个python模块。为了定义其路径,
.pth
文件定义如下:

version: 2
jobs:
  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/tests

workflows:
  version: 2
  test-all:
    jobs:
      - test_regression_model
#虚拟环境的创建
python-v-venv-env
#激活新创建的虚拟环境
源环境/箱/激活
为了设置我的模块路径(我的模块位于
packages/regression\u model/regression\u model
),我创建了这个
.pth
文件
env/lib/python3.7/site packages/regression\u model.pth
,其中包含:

# env/lib/python3.7/site-packages/regression_model.pth
../../../../packages/regression_model
现在,在我的项目中的任何地方,我都可以通过以下命令导入我的模块
regression\u model

导入回归模型
实际上,我的目标是使用CircleCI来部署我的项目

CircleCI配置如下:

version: 2
jobs:
  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/tests

workflows:
  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 pipeline
ModuleNotFoundError: No module named 'regression_model'
回溯(最近一次呼叫最后一次):
文件“packages/regression\u model/regression\u model/train\u pipeline.py”,第4行,在
从回归模型导入管道
ModuleNotFoundError:没有名为“回归模型”的模块
为了解决这个问题,必须准确地定义模块
回归_model
的路径,就像它在本地完成一样。问题是:如何定义循环中的路径

我试图通过使用环境变量
PYTHONPATH
来实现这一点,但没有成功


有什么建议吗?

我找到了解决办法。类似于在本地机器上手动完成的操作,我只定义了两个命令行,以便在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