Подтвердить что ты не робот

Python не может найти модуль в той же папке

Мой python каким-то образом не может найти какие-либо модули в одном каталоге. Что я делаю не так? (Python2.7)

Итак, у меня есть один каталог "2014_07_13_test" с двумя файлами в нем:

  • test.py
  • hello.py

где hello.py:

# !/usr/local/bin/python
# -*- coding: utf-8 -*-

def hello1():
    print 'HelloWorld!'

и test.py:

# !/usr/local/bin/python
# -*- coding: utf-8 -*-

from hello import hello1

hello1()

Еще python дает мне

>>> Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 4, in <module>
ImportError: No module named hello

Что не так?

4b9b3361

Ответ 1

Ваш код в порядке, я подозреваю, что ваша проблема заключается в том, как вы его запускаете.

Вам нужно запустить python из каталога '2014_07_13_test'.

Откройте командную строку и 'cd' в каталог '2014_07_13_test'.

Например:

$ cd /path/to/2014_07_13_test
$ python test.py

Если вы не можете "cd" в такой каталог, вы можете добавить его в sys.path

В test.py:

import sys, os
sys.path.append('/path/to/2014_07_13_test')

Или установите/отредактируйте PYTHONPATH

И все должно быть хорошо...

... ну есть небольшая ошибка с вашими линиями "shebang" (первая строка в обоих файлах), между "#" и "!" не должно быть пробела

Существует лучший shebang, который вы должны использовать.

Также вам не нужна строка shebang для каждого файла... только те, которые вы собираетесь запускать из своей оболочки в качестве исполняемых файлов.

Ответ 2

Измените свой импорт в test.py на:

from .hello import hello1

Ответ 3

У меня была аналогичная проблема, я решил ее, явно добавив каталог файлов в список путей:

import os
import sys

file_dir = os.path.dirname(__file__)
sys.path.append(file_dir)

После этого у меня не было проблем с импортом из того же каталога.

Ответ 4

Вот общее решение, которое я использую. Он решает проблему для импорта из модулей в одной папке:

import os.path
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))

Поместите это в верхней части модуля, который дает ошибку "Без модуля с именем xxxx"

Ответ 5

В моем случае Python не смог его найти, потому что я поместил код в модуль с дефисами, например, my-module. Когда я изменил его на my_module это сработало.

Ответ 6

Я столкнулся с этим вопросом. У меня было три папки в одном каталоге, поэтому я должен был указать, какая папка. Пример: из скрипта импорта папки

Ответ 7

Используя Pycharm здесь, Python 3:

Мой файл назывался file_to_open

Я изменил его на "FileToOpen", и он работал нормально.

Проблема: вероятно, не любит подчеркивания '_'