Travis ci上的Python3模块导入失败

时间:2015-01-23 11:31:31

标签: python-3.x import travis-ci

我已经制作了一个用于测试我的项目的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 projecttest文件夹中时,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成功导入?

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,所以我在这里发帖是为了帮助某人:

快速修复

我的快速解决方法是在PYTHONPATH=$PYTHONPATH:$(pwd)中添加此行导出.travis.yml

before_install:
  - "pip install -U pip"
  - "export PYTHONPATH=$PYTHONPATH:$(pwd)"

有一个setup.py

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