Следующий модуль не импортирует - PullRequest
5 голосов
/ 21 июня 2020

У меня есть «проект» PyCharm в Python, то есть у меня есть папка, которая представляет собой конгломерат всевозможных экспериментальных файлов python, удобных методов / классов и записных книжек Jupyter из следующих вместе с онлайн-классами.

На самом деле я только что написал кое-что, чем горжусь и хотел бы использовать повторно. Мне сложно импортировать. Я просмотрел и попытался реализовать ответы на следующие вопросы, но безрезультатно:

  1. Не могу импортировать собственные модули в Python
  2. Как импортировать мои собственные модули в python 3.6?
  3. Как элегантно импортировать мои собственные модули?

Структура проекта :

learning_project
|
├───.idea
│   ├───dictionaries
│   └───inspectionProfiles
|
├───decision_trees
├───linear_algebra
├───neural_networks
|   ├───based_sequential.py <---------------------------- # Module location #
│   ├───cross-entropy-gradient-descent
│   └───learning pytorch 
|       ├─── class_notebook.ipynb <---------------------- # Want to import for use here #
|       └───Cat_Dog_data  
|
└───venv
    ├───Include
    ├───Lib
    │   └───site-packages
    └───Scripts

Я пробовал следующее:

import based_sequential
from based_sequential import ClassName
import based_sequential.ClassName
import neural_networks
from neural_networks import based_sequential
import neural_networks.based_sequential
from neural_networks.based_sequential import ClassName

Все приводят к ошибке No module named '<pick your poison>'

  • Вопрос 1: Очевидно, что мне не хватает?
  • Вопрос 2: Моя организация здесь является частью проблемы? Я начинаю подозревать, что это так.

Я также подозреваю, что мне нужно поработать над изучением административных аспектов написания кода, который больше, чем один файл .py.

Ответы [ 2 ]

1 голос
/ 21 июня 2020

Надеюсь, вы возвращаете какое-то значение в функцию / модуль, который пытаетесь импортировать. Если нет, проверьте это.

В противном случае просто используйте sys.path из модуля sys и направьте его на файл, который вы хотите импортировать.

>>> import sys
>>> sys.path
   ['',
   'C:\\Python33\\Lib\\idlelib',
   'C:\\Windows\\system32\\python33.zip',
   'C:\\Python33\\DLLs',
   'C:\\Python33\\lib',
   'C:\\Python33',
   'C:\\Python33\\lib\\site-packages']
0 голосов
/ 21 июня 2020

Предлагаю вам проверить относительный импорт. https://realpython.com/absolute-vs-relative-python-imports/ Способ решения этой проблемы показан ниже:

СТРУКТУРА ФАЙЛА, КОТОРОЕ Я ИСПОЛЬЗУЮ:

└── project
    ├── package1
    │   ├── module1.py
    │   └── module2.py
    └── package2
        ├── __init__.py
        ├── module3.py
        ├── module4.py
        └── subpackage1
            └── module5.py

Для импорта из модуля 2 в модуль 1 используйте:

from .module2 import function1

В случае импорта модуля module3 из модуля2 используйте:

from ..package2 import module3

В ВАШЕМ СОБСТВЕННОМ СЛУЧАЕ, ЭТО ДОЛЖНО БЫТЬ:

from ..based_sequential import whatever
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...