Python не может найти модуль в той же папке
Мой python каким-то образом не может найти какие-либо модули в одном каталоге.
Что я делаю не так? (Python2.7)
Итак, у меня есть один каталог "2014_07_13_test" с двумя файлами в нем:
где 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
Что не так?
Ответы
Ответ 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", и он работал нормально.
Проблема: вероятно, не любит подчеркивания '_'