Витая проба, PYTHONPATH и sys.path

Я пытаюсь воспроизвести пример из "Управляемой тестами разработки с использованием Twisted" по адресу http://twistedmatrix.com/documents/current/core/howto/trial.html.

Я создал файлы:

calculus/__init__.py
calculus/base_1.py
calculus/test/__init__.py
calculus/test/test_base_1.py

Я изменил PYTHONPATH:

[xxx@zzz calculus]$ PYTHONPATH="$PYTHONPATH:`pwd`/.."

Я вызвал испытание:

[xxx@zzz twistedm]$ trial calculus.test.test_base_1
calculus
  test
    test_base_1 ...                                                     [ERROR]

===============================================================================
[ERROR]
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/twisted/trial/runner.py", line 602, in loadByNames
    things.append(self.findByName(name))
  File "/usr/lib/python2.7/site-packages/twisted/trial/runner.py", line 406, in findByName
    return reflect.namedAny(name)
  File "/usr/lib/python2.7/site-packages/twisted/python/reflect.py", line 307, in namedAny
    raise ObjectNotFound('%r does not name an object' % (name,))
twisted.python.reflect.ObjectNotFound: 'calculus.test.test_base_1' does not name an object

calculus.test.test_base_1
-------------------------------------------------------------------------------
Ran 1 tests in 0.199s

FAILED (errors=1)

Python не нашел мой модуль.

Но если я вызову оболочку Python и попытаюсь импортировать мои модули, Python импортирует их.

Затем я добавил строку "sys.path.append ('/ home / xxx / twistedm / calculus /..')" в файл "/usr/lib/python2.7/site-packages/twisted/python/reflect.py". И теперь все работает как надо.

Итак, я обнаружил, что пробная версия ищет модули в sys.path, и установка PYTHONPATH в командной строке не влияет на sys.path.

Вопрос в том, как изменить sys.path из командной строки при вызове пробной версии.

2 ответа

Или:

PYTHONPATH="${PWD}" trial calculus

Или же:

python -m twisted.trial calculus

Или напишите setup.py и установите свой источник (в virtualenv с pip -e, наверное) а то просто

trial calculus

Я только что обнаружил, что установка PYTHONPATH, даже пустая, в ~/.bashrc, а затем ее поиск решает проблему.

Итак, поместите строку в ~/.bashrc:

export PYTHONPATH=""

Затем выполните команду в терминале:

source ~/.bashrc

Теперь пробная версия работает даже без изменения PYTHONPATH, то есть с пустым PYTHONPATH.

Другие вопросы по тегам