Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. HTTP не поддерживает перенаправление к странице с помощью POST. Когда Вы перенаправляете где-нибудь, заголовок "Местоположения" HTTP говорит браузер, куда пойти, и браузер выполняет ПОЛУЧИТЬ запрос на ту страницу. Необходимо будет, вероятно, просто написать код для страницы для принятия, ПОЛУЧАЮТ запросы POST, а также запросы.
Обычно у вас есть каталог, имя которого является именем вашего пакета, где-то на вашем PYTHONPATH. Например:
eulerproject/
euler/
__init__.py
euler1.py
...
tests/
...
setup.py
Затем вы можете либо установить это в масштабе всей системы, либо не забудьте указать PYTHONPATH = / path / to / eulerproject /: $ PYTHONPATH
при вызове вашего скрипта.
Абсолютный импорт, например тогда это будет работать:
from euler import euler1
Edit :
Согласно документам Python, «модули, предназначенные для использования в качестве основного модуля приложения Python, всегда должны использовать абсолютный импорт». ( Цитируйте )
Таким образом, тестовый набор, такой как нос
, упомянутый в другом ответе, работает, потому что он импортирует пакеты, а не запускает их из командной строки.
Если вы хотите делать что-то вручную, ваш исполняемый скрипт должен находиться вне иерархии пакетов, например:
eulerproject/
runtests.py
euler/
__init__.py
euler1.py
...
tests/
__init__.py
testeulern.py
Теперь, это то, что предлагает ссылка, которую вы разместили в своем ответе.
Я хотел бы знать, что "не так" в этом, если есть что-нибудь. Очевидно, если вы действительно хотите отправить браузеру перенаправление, это не сработает, но тогда вы должны спросить, почему вы все равно пытаетесь преобразовать это, поскольку мне это кажется странным.
Надеюсь, что помогает.