Если… иначе, если не будет работать [закрыто]

Если вы выполняете app/server.py в качестве скрипта, родительский каталог app не добавляется к sys.path(). Вместо этого добавляется каталог app (не как пакет, а как путь поиска импорта).

У вас есть 3 варианта:

  1. Move server.py out пакета app (рядом с ним)
  2. Добавьте новый файл сценария рядом с app, который работает только:
    from app import server
    server.main()
    
  3. Добавьте родительский каталог от server.py до sys.path:
    import os.path
    import sys
    
    parent = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.insert(0, parent)
    
    Этот последний вариант может вызвать больше проблем; теперь как пакет app, так и модули, содержащиеся в , пакет app находятся на sys.path. Вы можете импортировать как app.server, так и server, и Python увидит их как два отдельных модуля, каждый со своей собственной записью в sys.modules, с отдельными копиями своих глобал.
-8
задан John Bollinger 22 June 2018 в 15:19
поделиться