我已经制作了一个用于测试我的项目的Python 3脚本。 The script具有以下结构:
main.py
myRequest.py
external/
requests/
__init__.py
many files of the library...
当我运行python3 main.py
时,导入文件myRequest.py
。在该文件中,我import external.requests as reqs
。
这对我有用,也传递给Travis CI
但是,当我将上述文件放在my project的test
文件夹中时,Travis CI作业cannot find the module:
ImportError: No module named external.requests.
当我尝试在在线IDE(c9,Ubuntu 14.04 ,Python 3.4.0 )中运行脚本时,它能够导入它。
在c9,我尝试过from .external import requests as reqs
,但它提出了一个:
SystemError: Parent module '' not loaded, cannot perform relative import.
添加空的__init__.py
文件或运行python3 -m main.py
没有做任何事情。
我应该怎样做才能在Travis CI成功导入?
答案 0 :(得分:3)
我遇到了同样的问题,所以我在这里发帖是为了帮助某人:
我的快速解决方法是在PYTHONPATH=$PYTHONPATH:$(pwd)
中添加此行导出.travis.yml
:
before_install:
- "pip install -U pip"
- "export PYTHONPATH=$PYTHONPATH:$(pwd)"
setup.py
应该是默认选项,因为它是最优雅的。
有了这个,你可以解决你的相对导入问题,尝试配置如下:
from setuptools import setup, find_packages
setup(name='MyPythonProject',
version='0.0.1',
description='What it does',
author='',
author_email='',
url='',
packages=find_packages(),
)
然后在.travis.yml
before_install:
- "pip install -U pip"
- "python setup.py install