I’m trying to run my project from terminal but I keep on getting ModuleNotFoundError: No module named 'config'. The structure of my project is:
Project folder
-config
-settings.py
-folder1
-folder2
-pythonfile.py
While in folder1/folder2/ I run the script —> python3 -m pythonfile.py but I get the No module named config. The Run button from PyCharm works like charm but I want to run the script from terminal. Also I’ve checked the sys.path and I’ve got the root path of the project /home/name/Desktop/Project and the /home/name/Desktop/Project/folder1/folder2/.
Traceback (most recent call last):
File "/usr/lib/python3.6/runpy.py", line 183, in _run_module_as_main
mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
File "/usr/lib/python3.6/runpy.py", line 109, in _get_module_details
__import__(pkg_name)
File "/home/name/Desktop/Project/folder1/folder2/pythonfile.py", line 4, in <module>
from config import settings as CONFIG
ModuleNotFoundError: No module named 'config'
Hi, I’m following this Codementor.io tutorial to make a telegram bot: [tutorial] (https://www.codementor.io/garethdwyer/building-a-chatbot-using-telegram-and-python-part-2-sqlite-databse-backend-m7o96jger?icn=post-goi5fncay&ici=post-m7o96jger#comments-m7o96jger)
Part 1 went fine (simple echo bot), but working through Part 2 (adding SQLlite database) each time I run the code in IDLE (Python 3.6) I get a «no module named config» error, and my Telegram bot is now unresponsive.
I had tried to do some customization initially, but now I’ve un-done all of that and what I’m running is the exact same code as on the github for the tutorial, here: [github] (https://github.com/sixhobbits/python-telegram-tutorial/blob/master/part2/todobot.py)
So, what is in my IDLE is now exactly verbatim as what is here on Github, (just with the addition of my bot’s API token) and the «ModuleNotFound: No module named config» message still persists.
I’ve checked the feedback on the original tutorial for a similar issue but couldn’t find one. Googling around for what to do for this issue I’ve tried changing «import config» to «import config.py» , and I’ve double checked for spelling errors, but all of the other advice I’ve come across seems to be geared towards code and issues that are way out of my league. Like, I come across this advice such as this Dave on Code [article] (http://www.daveoncode.com/2017/03/07/how-to-solve-python-modulenotfound-no-module-named-import-error/) but I can’t actually understand the half of the article itself, what is being advised here or if it actually applies to my issue. I don’t know where I should be looking for help to understand why this module isn’t found, so any advice is greatly appreciated!

Что означает ошибка ModuleNotFoundError: No module named
Python ругается, что не может найти нужный модуль
Python ругается, что не может найти нужный модуль
Ситуация: мы решили заняться бигдатой и обработать большой массив данных на Python. Чтобы было проще, мы используем уже готовые решения и находим нужный нам код в интернете, например такой:
import numpy as np
x = [2, 3, 4, 5, 6]
nums = np.array([2, 3, 4, 5, 6])
type(nums)
zeros = np.zeros((5, 4))
lin = np.linspace(1, 10, 20)
Копируем, вставляем в редактор кода и запускаем, чтобы разобраться, как что работает. Но вместо обработки данных Python выдаёт ошибку:
❌ModuleNotFoundError: No module named numpy
Странно, но этот код точно правильный: мы его взяли из блога разработчика и, по комментариям, у всех всё работает. Откуда тогда ошибка?
Что это значит: Python пытается подключить библиотеку, которую мы указали, но не может её найти у себя.
Когда встречается: когда библиотеки нет или мы неправильно написали её название.
Что делать с ошибкой ModuleNotFoundError: No module named
Самый простой способ исправить эту ошибку — установить библиотеку, которую мы хотим подключить в проект. Для установки Python-библиотек используют штатную команду pip или pip3, которая работает так: pip install <имя_библиотеки>. В нашем случае Python говорит, что он не может подключить библиотеку Numpy, поэтому пишем в командной строке такое:
pip install numpy
Это нужно написать не в командной строке Python, а в командной строке операционной системы. Тогда компьютер скачает эту библиотеку, установит, привяжет к Python и будет ругаться на строчку в коде import numpy.
Ещё бывает такое, что библиотека называется иначе, чем указано в команде pip install. Например, для работы с телеграм-ботами нужна библиотека telebot, а для её установки надо написать pip install pytelegrambotapi. Если попробовать подключить библиотеку с этим же названием, то тоже получим ошибку:

А иногда такая ошибка — это просто невнимательность: пропущенная буква в названии библиотеки или опечатка. Исправляем и работаем дальше.
Вёрстка:
Кирилл Климентьев
Я пытаюсь запустить приложение cookiecutter-django под Apache с установленным модулем mod_wsgi через pip.
Python3 manager.py runserver работает.
Но после запуска в Apache я получил сообщение об ошибке: «Конфигурация модуля не найдена». Итак, я pip install config. (Он не установлен в моей системе разработки.)
Это поместило файл config.py в мой /usr/local/pulseenv/lib/python3.5/site-packages.
В этом файле были различные синтаксические ошибки, которые я исправил. Насколько я могу судить, ошибки были связаны с изменениями между Python 2.7 и 3.5.
Но теперь я получаю эту ошибку, и я застрял, куда идти дальше:
ImportError: No module named 'config.settings'; 'config' is not a package
Я не вижу в error.log никаких подсказок о том, как дальше отслеживать ошибку. Так что это за модуль? Зачем мне это нужно? А как разобраться в моей проблеме?
Обновлено:
Вот мой файл vhost (/etc/apache2/sites-available/000-default.conf):
<VirtualHost *:80>
ServerAdmin webmaster@localhost
#DocumentRoot /var/www/html
DocumentRoot /var/www/pulsemanager/pulsemanager
Alias /static /var/www/pulsemanager/pulsemanager/static
<Directory /var/www/pulsemanager/pulsemanager/static>
Require all granted
</Directory>
<Directory /var/www/pulsemanager/config>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIScriptAlias / /var/www/pulsemanager/config/wsgi.py
WSGIDaemonProcess pulsemanager
WSGIProcessGroup pulsemanager
WSGIApplicationGroup %{GLOBAL}
</VirtualHost>
Мой проект оформлен так:
ubuntu@ip-172-31-84-213:/var/www/pulsemanager$ ls
conf docs instantdudiobook.ipynb package.json pytest.ini reqs.txt setup.cfg
config env.example LICENSE pulsemanager README.md reqs.txt.sav survey2.txt
CONTRIBUTORS.txt gulpfile.js manage.py pulsenotebook.ipynb README.rst requirements utility
ubuntu@ip-172-31-84-213:/var/www/pulsemanager$ cd pulsemanager/
ubuntu@ip-172-31-84-213:/var/www/pulsemanager/pulsemanager$ ls
contrib locale lsrc3 static surveys templates users
ubuntu@ip-172-31-84-213:/var/www/pulsemanager/pulsemanager$
И вот моя виртуальная среда:
ubuntu@ip-172-31-84-213:/usr/local/pulseenv$ ls
bin include lib lib64 pip-selfcheck.json pyvenv.cfg share
ubuntu@ip-172-31-84-213:/usr/local/pulseenv$ cd lib
ubuntu@ip-172-31-84-213:/usr/local/pulseenv/lib$ pip3 list
Package Version
----------------------------- ----------------------
apturl 0.5.2
argon2 0.1.10
argon2-cffi 18.1.0
arrow 0.12.1
beautifulsoup4 4.4.1
binaryornot 0.4.4
blinker 1.3
Brlapi 0.6.4
cairocffi 0.8.0
certifi 2018.1.18
cffi 1.11.5
chardet 3.0.4
checkbox-support 0.22
click 6.7
config 0.3.9
cloud-init 18.2
command-not-found 0.3
configobj 5.0.6
cookiecutter 1.6.0
cryptography 1.2.3
cssselect2 0.2.1
cycler 0.10.0
defer 1.0.6
defusedxml 0.5.0
Django 2.0.3
django-admin-tools 0.8.1
django-allauth 0.35.0
django-autoslug 1.9.3
django-crispy-forms 1.7.2
django-debug-toolbar 1.9.1
django-environ 0.4.4
django-extensions 2.0.6
django-language-field 0.0.3
django-model-utils 3.1.1
feedparser 5.1.3
future 0.16.0
guacamole 0.9.2
hibagent 1.0.1
httplib2 0.9.1
idna 2.6
Jinja2 2.8
jinja2-time 0.2.0
jsonpatch 1.10
jsonpointer 1.9
language-selector 0.1
louis 2.6.4
lxml 3.5.0
Mako 1.0.3
MarkupSafe 0.23
oauthlib 1.0.3
onboard 1.2.0
padme 1.1.1
pdfrw 0.4
pexpect 4.0.1
pip 10.0.1
plainbox 0.25
poyo 0.4.1
prettytable 0.7.2
ptyprocess 0.5
pyasn1 0.1.9
pycparser 2.18
pycups 1.9.73
pycurl 7.43.0
pygobject 3.20.0
PyJWT 1.3.0
pyparsing 2.0.3
Pyphen 0.9.4
pyserial 3.0.1
python-apt 1.1.0b1+ubuntu0.16.4.1
python-dateutil 2.7.0
python-debian 0.1.27
python-systemd 231
python3-openid 3.1.0
pytz 2018.3
pyxdg 0.25
PyYAML 3.11
reportlab 3.3.0
requests 2.18.4
requests-oauthlib 0.8.0
sessioninstaller 0.0.0
setuptools 39.1.0
six 1.10.0
sqlparse 0.2.4
ssh-import-id 5.5
system-service 0.3
tinycss2 0.6.1
ubuntu-drivers-common 0.0.0
ufw 0.35
unattended-upgrades 0.1
unity-scope-calculator 0.1
unity-scope-chromiumbookmarks 0.1
unity-scope-colourlovers 0.1
unity-scope-devhelp 0.1
unity-scope-firefoxbookmarks 0.1
unity-scope-gdrive 0.7
unity-scope-manpages 0.1
unity-scope-openclipart 0.1
unity-scope-texdoc 0.1
unity-scope-tomboy 0.1
unity-scope-virtualbox 0.1
unity-scope-yelp 0.1
unity-scope-zotero 0.1
urllib3 1.22
usb-creator 0.3.0
webencodings 0.5.1
wheel 0.29.0
whichcraft 0.4.1
xdiagnose 3.8.4.1
xkit 0.0.0
XlsxWriter 0.7.3
Обновлено еще раз:
У меня есть каталог конфигурации:
ubuntu@ip-172-31-84-213:~$ cd /var/www/pulsemanager/config/
ubuntu@ip-172-31-84-213:/var/www/pulsemanager/config$ ls
__init__.py __pycache__ settings urls.py wsgi.py
ubuntu@ip-172-31-84-213:/var/www/pulsemanager/config$ cd settings
ubuntu@ip-172-31-84-213:/var/www/pulsemanager/config/settings$ ls
base.py __init__.py local.py production.py __pycache__ test.py
ubuntu@ip-172-31-84-213:/var/www/pulsemanager/config/settings$
А вот и мой wsgi.py. Похоже, что для DJANGO_SETTINGS_MODULE по умолчанию используется config.settings.production (/var/pulsemanager/config/settings/production.py):
"""
WSGI config for pulsemanager project.
"""
import os
import sys
from django.core.wsgi import get_wsgi_application
# This allows easy placement of apps within the interior
# pulsemanager directory.
app_path = os.path.dirname(os.path.abspath(__file__)).replace('/config', '')
sys.path.append(os.path.join(app_path, 'pulsemanager'))
if os.environ.get('DJANGO_SETTINGS_MODULE') == 'config.settings.production':
from raven.contrib.django.raven_compat.middleware.wsgi import Sentry
# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks
# if running multiple sites in the same mod_wsgi process. To fix this, use
# mod_wsgi daemon mode with each site in its own daemon process, or use
# os.environ["DJANGO_SETTINGS_MODULE"] = "config.settings.production"
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.production")
# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
application = get_wsgi_application()
if os.environ.get('DJANGO_SETTINGS_MODULE') == 'config.settings.production':
application = Sentry(application)
# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)
РЕДАКТИРОВАТЬ 3:
Я удалил конфигурационный пакет. Я почти уверен, что это отвлекающий маневр. Я вижу несколько ссылок на config, например os.environ.setdefault(«DJANGO_SETTINGS_MODULE», «config.settings.production») и app_path = os.path.dirname(os.path.abspath(__file__)).replace(‘/config’, ») в wsgi.py. В чем моя проблема?
Я добавил export DJANGO_SETTINGS_MODULE=config.settings.production в config/__init__.py и даже попытался поместить os.environ[«DJANGO_SETTINGS_MODULE»] = «config.settings.production» в начало wsgi.py.
Я обновил WSGIDaemonProcess до:
WSGIDaemonProcess pulsemanager python-home=/usr/local/pulseenv/ python-path=/var/www/pulsemanager/pulsemanager:/usr/local/pulseenv/lib/python3.5/site-packages
Но я все еще получаю:
ImportError: No module named 'config'
Вот еще одна ошибка error.log
[Tue May 08 16:58:33.360155 2018] [mpm_event:notice] [pid 7420:tid 139690171062144] AH00489: Apache/2.4.18 (Ubuntu) OpenSSL/1.0.2g mod_wsgi/4.6.4 Python/3.5 configured -- resuming normal operations
[Tue May 08 16:58:33.360248 2018] [core:notice] [pid 7420:tid 139690171062144] AH00094: Command line: '/usr/sbin/apache2'
[Tue May 08 16:58:33.414142 2018] [wsgi:info] [pid 7423:tid 139690171062144] mod_wsgi (pid=7423): Attach interpreter ''.
[Tue May 08 16:58:33.437248 2018] [wsgi:info] [pid 7423:tid 139690171062144] mod_wsgi (pid=7423): Adding '/var/www/pulsemanager/pulsemanager' to path.
[Tue May 08 16:58:33.441845 2018] [wsgi:info] [pid 7423:tid 139690171062144] mod_wsgi (pid=7423): Adding '/usr/local/pulseenv/lib/python3.5/site-packages' to path.
[Tue May 08 16:58:33.449915 2018] [wsgi:info] [pid 7423:tid 139690171062144] mod_wsgi (pid=7423): Imported 'mod_wsgi'.
[Tue May 08 16:58:33.454029 2018] [wsgi:info] [pid 7423:tid 139690021156608] [remote 172.31.6.98:39831] mod_wsgi (pid=7423, process='pulsemanager', application=''): Loading Python script file '/var/www/pulsemanager/config/wsgi.py'.
[Tue May 08 16:58:33.683108 2018] [wsgi:error] [pid 7423:tid 139690021156608] [remote 172.31.6.98:39831] mod_wsgi (pid=7423): Failed to exec Python script file '/var/www/pulsemanager/config/wsgi.py'.
[Tue May 08 16:58:33.683161 2018] [wsgi:error] [pid 7423:tid 139690021156608] [remote 172.31.6.98:39831] mod_wsgi (pid=7423): Exception occurred processing WSGI script '/var/www/pulsemanager/config/wsgi.py'.
...
[Tue May 08 16:59:13.003234 2018] [wsgi:error] [pid 7423:tid 139689928836864] [remote 172.31.93.15:41324] ImportError: No module named 'config'