У меня есть приложение на Python, которое разработала команда, и если я запускаю «docker-compose up», а затем запускаю модульные тесты, они отлично работают. Так что эта часть потрясающая.
Но я отвечаю за то, чтобы наше приложение было построено, а образ Docker создан в Jenkins. А в Jenkins я использую команду «docker build», а затем команду «docker run» и устанавливаю CMD для нашего сценария «runtests.py». Очевидно, нам нужно автоматически запускать тесты в Jenkins. И когда я делаю это, я получаю эту ошибку:
ModuleNotFoundError: No module named 'smored'
Итак, я добавил отладочную информацию в наш скрипт runtests.py:
print(" os.path.dirname(os.path.realpath(__file__)) " + os.path.dirname(os.path.realpath(__file__)))
print(" os.getcwd() " + os.getcwd())
try:
user_paths = os.environ['PYTHONPATH'].split(os.pathsep)
print(" PYTHONPATH " + user_paths)
except KeyError:
print(" There was a KeyError when we tried os.environ['PYTHONPATH'].split(os.pathsep) ")
list_dir = os.listdir(".") # returns list
print("contents of cwd directory")
for item in list_dir:
print(item)
try:
list_dir = os.listdir("smored") # returns list
print("contents of smored directory")
for item in list_dir:
print(item)
except:
print("In the current working directory, we could not find a path called 'smored'")
И похоже, что скрипт выполняется в правильном каталоге, и в этом каталоге есть папка с именем «smored», внутри которой находится пустой файл с именем init .py. Поэтому должен быть модуль с именем «smored», и эта ошибка не должна возникать.
Следующие 2 строки в runtests.py:
os.environ['DJANGO_SETTINGS_MODULE'] = 'smored.settings.test'
django.setup()
Сценарий умирает на следующей строке, когда мы вызываем django.setup.
Почему этот код выдает эту ошибку:
ModuleNotFoundError: No module named 'smored'