#python #python-import #python-poetry
Вопрос:
Структура моего проекта:
.
├── pyproject.toml
├── src
│ ├── damastes
│ │ ├── __init__.py
│ │ ├── main.py
│ ├── __init__.py
pyproject.toml
:
...
[tool.poetry.scripts]
damastes = "damastes.main:main"
...
~/.local/bin/damastes
:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from damastes.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script.pyw|.exe)?
С этой конфигурацией,
$ damastes
работает успешно, но
$ poetry run damastes
результаты в
ModuleNotFoundError: No module named 'damastes'
С измененными pyproject.toml
:
...
[tool.poetry.scripts]
damastes = "src.damastes.main:main"
...
и ~/.local/bin/damastes
, построенный и установленный соответственно:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from src.damastes.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script.pyw|.exe)?
Все наоборот:
$ poetry run damastes
это успех;
$ damastes
результаты в
ModuleNotFoundError: No module named 'src'
Что я упускаю?
UPD:
С pyproject.toml
:
...
[tool.poetry.scripts]
damastes = "damastes.main:main"
...
бежать
$ poetry install
снова.
Комментарии:
1. перейдите
~/.local/bin/damastes
и посмотрите, как структурирован проект , и из интерпретатора python попробуйте загрузитьmain
, как только вы узнаете способ импорта в оболочке python, обновите его в.toml
файле2. Не могли бы вы быть более конкретными? От
~/.local/bin
:>>> import damastes
и>>> import damastes.main
является успехом;>>> import src
приводит кModuleNotFoundError: No module named 'src'
. Здесь нет ничего нового.3. откройте пакет damates в проводнике файлов, вы увидите там много файлов, которые, вероятно,
main
были бы записаны__init__.py
. попробуйте найтиsrc
там. и, основываясь на структуре каталогов/пакетов, попытайтесь получить доступ к модулю/функции, как только вы сможете получить доступsrc
, ваша работа будет выполнена4. Проект не был создан с текущим именем и структурой. Нужно поддерживать синхронизацию среды.
5. у тебя есть решение? вы можете опубликовать его в качестве ответа
Ответ №1:
Похоже, что после любого изменения в структуре проекта нужно запустить
$ poetry install
снова.
, '', sys.argv[0])
sys.exit(main())
С этой конфигурацией,
работает успешно, но
результаты в
С измененными pyproject.toml
:
и ~/.local/bin/damastes
, построенный и установленный соответственно:
Все наоборот:
это успех;
результаты в
Что я упускаю?
UPD:
С pyproject.toml
:
бежать
снова.
Комментарии:
1. перейдите
~/.local/bin/damastes
и посмотрите, как структурирован проект , и из интерпретатора python попробуйте загрузитьmain
, как только вы узнаете способ импорта в оболочке python, обновите его в.toml
файле2. Не могли бы вы быть более конкретными? От
~/.local/bin
:>>> import damastes
и>>> import damastes.main
является успехом;>>> import src
приводит кModuleNotFoundError: No module named 'src'
. Здесь нет ничего нового.3. откройте пакет damates в проводнике файлов, вы увидите там много файлов, которые, вероятно,
main
были бы записаны__init__.py
. попробуйте найтиsrc
там. и, основываясь на структуре каталогов/пакетов, попытайтесь получить доступ к модулю/функции, как только вы сможете получить доступsrc
, ваша работа будет выполнена4. Проект не был создан с текущим именем и структурой. Нужно поддерживать синхронизацию среды.
5. у тебя есть решение? вы можете опубликовать его в качестве ответа
Ответ №1:
Похоже, что после любого изменения в структуре проекта нужно запустить
снова.
, '', sys.argv[0])
sys.exit(main())
Все наоборот:
это успех;
результаты в
Что я упускаю?
UPD:
С pyproject.toml
:
бежать
снова.
Комментарии:
1. перейдите
~/.local/bin/damastes
и посмотрите, как структурирован проект , и из интерпретатора python попробуйте загрузитьmain
, как только вы узнаете способ импорта в оболочке python, обновите его в.toml
файле2. Не могли бы вы быть более конкретными? От
~/.local/bin
:>>> import damastes
и>>> import damastes.main
является успехом;>>> import src
приводит кModuleNotFoundError: No module named 'src'
. Здесь нет ничего нового.3. откройте пакет damates в проводнике файлов, вы увидите там много файлов, которые, вероятно,
main
были бы записаны__init__.py
. попробуйте найтиsrc
там. и, основываясь на структуре каталогов/пакетов, попытайтесь получить доступ к модулю/функции, как только вы сможете получить доступsrc
, ваша работа будет выполнена4. Проект не был создан с текущим именем и структурой. Нужно поддерживать синхронизацию среды.
5. у тебя есть решение? вы можете опубликовать его в качестве ответа
Ответ №1:
Похоже, что после любого изменения в структуре проекта нужно запустить
снова.
, », sys.argv[0])
sys.exit(main())
С этой конфигурацией,
работает успешно, но
результаты в
С измененными pyproject.toml
:
и ~/.local/bin/damastes
, построенный и установленный соответственно:
Все наоборот:
это успех;
результаты в
Что я упускаю?
UPD:
С pyproject.toml
:
бежать
снова.
Комментарии:
1. перейдите
~/.local/bin/damastes
и посмотрите, как структурирован проект , и из интерпретатора python попробуйте загрузитьmain
, как только вы узнаете способ импорта в оболочке python, обновите его в.toml
файле2. Не могли бы вы быть более конкретными? От
~/.local/bin
:>>> import damastes
и>>> import damastes.main
является успехом;>>> import src
приводит кModuleNotFoundError: No module named 'src'
. Здесь нет ничего нового.3. откройте пакет damates в проводнике файлов, вы увидите там много файлов, которые, вероятно,
main
были бы записаны__init__.py
. попробуйте найтиsrc
там. и, основываясь на структуре каталогов/пакетов, попытайтесь получить доступ к модулю/функции, как только вы сможете получить доступsrc
, ваша работа будет выполнена4. Проект не был создан с текущим именем и структурой. Нужно поддерживать синхронизацию среды.
5. у тебя есть решение? вы можете опубликовать его в качестве ответа
Ответ №1:
Похоже, что после любого изменения в структуре проекта нужно запустить
снова.