【问题标题】:How to fix python module import errors in jenkins如何修复jenkins中的python模块导入错误
【发布时间】:2016-08-27 02:16:35
【问题描述】:

尽管根据此处关于堆栈溢出的问题设置了我的路径和 python 路径,但我在 Jenkins 中遇到了模块导入错误

我试过了

Jenkins: putting my Python module on the PYTHONPATH

还有这个

Python module import failure in Jenkins

同样的命令在我的本地机器上运行,没有任何导入问题,但在 Jenkins 上失败

命令

#!/bin/bash

export PYTHONPATH=$WORKSPACE:$PYTHONPATH
export PATH=$WORKSPACE:$PATH
export DJANGO_SETTINGS_MODULE=myapp.settings.test

echo "Working directory: "
pwd

echo "path: "
echo $PATH

echo "Python path: "
echo $PYTHONPATH


/home/adminuser/.virtualenvs/myapp/bin/python myapp/manage.py jenkins --project-apps-tests  --enable-coverage --settings=myapp.settings.test

构建错误

Working directory: 
/var/lib/jenkins/jobs/myapp_QA_TESTS/workspace
path: 
/var/lib/jenkins/jobs/myapp_QA_TESTS/workspace/myapp/apps/:/var/lib/jenkins/jobs/myapp_QA_TESTS/workspace:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Python path: 
/var/lib/jenkins/jobs/myapp_QA_TESTS/workspace/myapp/apps/:/home/adminuser/.virtualenvs/myapp/bin:/var/lib/jenkins/jobs/myapp_QA_TESTS/workspace:

-------- USING TEST SETTINGS ------

Traceback (most recent call last):
 ......
    File "/var/lib/jenkins/jobs/myapp_QA_TESTS/workspace/myapp/apps/accounts/models.py", line 18, in <module>
        from apps.registration.tokens.token import GenerateToken
    ImportError: No module named registration.tokens.token

我的文件结构

概览

myapp/
├── apps
│   ├── __init__.py
│   ├── accounts
│   ├── registration
├── myapp
│   ├── __init__.py
│   ├── celery.py
│   ├── settings
│   ├── urls.py
│   └── wsgi.py
├── manage.py

查看模块目录

myapp/apps/registration/tokens
├── __init__.py
└── token.py

myapp/apps/accounts/
├── __init__.py
├── models.py

我什至尝试将工作区目录和 virtualenv 路径附加到 PATH 和 PYTHONPATH,我什至还将模块目录添加到 PATH 和 PYTHONPATH

当我在服务器本身上运行命令时,我得到了同样的错误。这可能是因为我的 virtualenv 是由管理员用户创建的,但现在 Jenkins 正在尝试使用它,但是所有包都加载了

如何解决此导入错误,感谢任何帮助

【问题讨论】:

    标签: python django jenkins


    【解决方案1】:

    终于明白了

    您需要在测试期间创建虚拟环境,所以这是最后一个有效的命令

    #!/bin/bash
    
    
    export WORKSPACE=`pwd`
    
    # Create/Activate virtualenv
    virtualenv testenv -p /usr/bin/python3
    
    source testenv/bin/activate
    
    # Install requirements
    pip install -r requirements/test.txt 
    
    
    # Run them tests
    python myapp/manage.py jenkins --project-apps-tests  --enable-coverage --settings=myapp.settings.test
    

    希望这可以帮助像我一样被卡住的人

    【讨论】:

    • 谢谢,我遇到了类似的问题,这对我有帮助!
    • 很高兴我能帮上忙
    猜你喜欢
    • 2018-12-20
    • 2022-07-22
    • 2019-04-09
    • 2020-10-05
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多