Ошибка Python "ImportError: модуль не назван"

Python установлен в локальном каталоге.

Мое дерево каталогов выглядит так:

(local directory)/site-packages/toolkit/interface.py

Мой код здесь:

(local directory)/site-packages/toolkit/examples/mountain.py

Чтобы запустить пример, я пишу python mountain.py, и в коде у меня есть:

from toolkit.interface import interface

И я получаю ошибку:

Traceback (most recent call last):
  File "mountain.py", line 28, in ?
    from toolkit.interface import interface
ImportError: No module named toolkit.interface

Я уже проверил sys.path, и там у меня есть каталог /site-packages. Кроме того, у меня есть файл __init__.py.bin в папке набора инструментов, чтобы указать Python, что это пакет. У меня также есть __init__.py.bin в каталоге примеров.

Я не знаю, почему Python не может найти файл, когда он находится в sys.path. Есть идеи? Может это проблема с разрешениями? Мне нужно разрешение на выполнение?

Убедитесь, что у вас есть разрешение на чтение этого файла из python. См .: stackoverflow.com/a/20999950/1657225

cSn 08.01.2014 19:39

Обязательно пометьте свой каталог как «Resources Root», чтобы PyCharm узнал, что это пакет.

Yushan ZHANG 18.10.2017 16:41

Проблема в моем случае заключалась в том, что было разрешение на новые установленные модули, а не 755. Это произошло потому, что umask на машине был 0027, из-за чего у others не было разрешения read, из-за чего модуль не читался. Добавление разрешения read устранило мою проблему. После установки стоит проверить разрешение целевого каталога.

anu 27.11.2017 03:46

Попробуйте взорвать url: stackoverflow.com/questions/47887614/…

Rawan-25 19.12.2017 16:28

возможно, имя локального каталога - interface (возник конфликт).

Benyamin Jafari 13.08.2018 12:16

проверьте такие вещи, как: используется ли python2 вместо 3? У ваших файлов настроено правильное окончание строки? Правильно ли объявлены пакеты?

DGoiko 28.09.2019 18:46
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
511
6
1 717 093
30
Перейти к ответу Данный вопрос помечен как решенный

Ответы 30

Чтобы пометить каталог как пакет, вам нужен файл с именем __init__.py, это поможет?

У меня уже есть файл с именем в этом.py.bin. Если я изменю имя на в этом.py, я получаю эту ошибку: /__init__.py ", строка 1" утилиты "," демонстрация "] ^ SyntaxError: неверный синтаксис

Eduardo 04.12.2008 00:38

Что в в этом.py? Опубликуйте это как часть вашего вопроса, пожалуйста.

S.Lott 04.12.2008 00:47

Ничего нет, он пустой, это было с пакетом, который я скачиваю, нужно ли что-то писать в файле ?.

Eduardo 04.12.2008 00:50

@ S.Lott: вам не нужно ничего класть в свой в этом.py, верно?

igorgue 04.12.2008 00:52

@ Эдуардо. Ваш в этом.py получает ошибку. А вы говорите, что он пустой. С этим трудно примириться. И его нельзя назвать в этом.py.bin - Python проигнорирует этот файл. Обычно в нем ничего не может быть.

S.Lott 04.12.2008 00:57

Вы были правы, Лотт, я отредактировал файл с помощью редактора Windows, и он написал несколько скрытых символов, теперь я создал новые файлы с помощью vi.

Eduardo 04.12.2008 01:09

@Eduardo: Вы можете захотеть получить Блокнот программиста или Komodo Edit или что-то, что редактирует чистый текст без скрытых специальных символов. Они могут быть проще в использовании, чем vi.

S.Lott 04.12.2008 01:17

Спасибо за совет. Я обычно использую nano для редакции. Причина, по которой я использовал редактор Windows, заключается в том, что я работаю в кластере и использую WinSCP для перемещения файлов, а иногда я использую этот редактор для файлов изменений.

Eduardo 04.12.2008 01:21

Делает

(local directory)/site-packages/toolkit

есть __init__.py?

Чтобы выполнить импорт ходить через ваши каталоги, в каждом каталоге должен быть файл __init__.py.

Хорошая точка зрения! Примечание. Начиная с Python 3.3, любой каталог в sys.path с именем, совпадающим с именем пакета, будет распознан.

PatrickT 25.06.2016 19:59

разве это не нужно только для ссылок на относительный путь? почему должен есть в каждом каталоге?

Sonic Soul 04.03.2019 20:12
Ответ принят как подходящий

Основываясь на ваших комментариях к сообщению orip, я предполагаю, что произошло следующее:

  1. Вы редактировали __init__.py в windows.
  2. Редактор Windows добавил что-то непечатаемое, возможно, возврат каретки (конец строки в Windows - это CR / LF; в unix это только LF) или, возможно, CTRL-Z (конец файла в Windows).
  3. Вы использовали WinSCP, чтобы скопировать файл в свой unix-ящик.
  4. WinSCP подумал: «Это что-то, что не является основным текстом; я добавлю расширение .bin для обозначения двоичных данных».
  5. Отсутствующий __init__.py (теперь называемый __init__.py.bin) означает, что python не понимает инструментарий как пакет.
  6. Вы создаете __init__.py в соответствующем каталоге и все работает ...?

Кроме того, python -c 'import sys; print sys.path 'помогает - иногда пользователь помещал файлы по пути, который не проверялся.

mikebabcock 28.02.2012 19:06

Я использую то же самое, за исключением того, что WinSCP не добавлял .bin.

user 31.10.2013 10:41

если у меня пустой "__init__.py", произойдет ли то же самое?

dietbacon 14.12.2014 04:02

OMG, вы правите! Это моя история: 1. Вы редактировали в этом.py в Windows 2. Он добавил TAB вместо пробелов 3. Вы много гуглите, пока не найдете этот пост! ;)

GBrian 01.03.2016 11:21

Для меня проблема заключалась в том, что я использовал python driver.py, тогда как мне следовало использовать python3 driver.py с тех пор, как я установил с pip3.

Eric Wiener 17.03.2019 23:26

Как отметил @EricWiener, использование python 2 также может вызвать эту проблему. Он может использовать #! / Usr / bin / env python для обнаружения среды python и отображать python2 вместо python3, что вызывает эту ошибку в некоторых пакетах.

DGoiko 28.09.2019 18:44

Что внутри в этом.py?

Dhruv 07.04.2020 03:11

чтобы добавить комментарий @mikebabcock, из пути, в моем случае, есть прецедентный путь, содержащий папку, которая маскирует фактическую папку, которую я собираюсь использовать.

kursun 21.12.2020 11:52

Я решил свою проблему и напишу краткое изложение того, что было не так, и решение:

Файл нужно называть именно __init__.py. Если расширение отличается, например, в моем случае .py.bin, тогда Python не может перемещаться по каталогам, а затем не может найти модули. Для редактирования файлов вам необходимо использовать редактор Linux, например vi или нано. Если вы используете редактор Windows, это напишет некоторые скрытые символы.

Другая проблема, которая влияла на это, заключалась в том, что у меня была другая версия Python, установленная корнем, поэтому, если кто-то работает с локальной установкой python, убедитесь, что установка Python, на которой выполняются программы, является локальным Python. Чтобы проверить это, просто выполните which python и посмотрите, находится ли исполняемый файл в вашем локальном каталоге. Если нет, измените путь, но убедитесь, что локальный каталог Python находится раньше, чем другой каталог Python.

Проблема, с которой я столкнулся, заключалась в том, что модуль был (пере) установлен с помощью pip, и только пользователь root имел к нему доступ, поэтому пользователь, запустивший программу, не видел его.

Jānis Elmeris 08.06.2012 17:26

@ JānisElmeris, не могли бы вы подробнее рассказать о приведенном выше комментарии, я думаю, что я тоже столкнулся с аналогичной ошибкой. Мои файлы __init__.py помещены в соответствующий каталог, но я вручную установил пакет с помощью setup.py. Как установка нового пакета помешала импорту.

Krishna Oza 09.05.2018 08:34

@darth_coder, извини, это было шесть лет назад, и я не помню случая. Кроме того, я очень мало занимаюсь Python, совсем не в последнее время. Из того, что я написал, я могу просто подумать, что установил пакет как root, что изменило разрешения, так что другие пользователи не имели доступа, который у них был раньше.

Jānis Elmeris 09.05.2018 17:59

Ага. Вам нужен каталог для хранения файла __init__.py, который инициализирует пакет. Вот посмотрите это.

The __init__.py files are required to make Python treat the directories as containing packages; this is done to prevent directories with a common name, such as string, from unintentionally hiding valid modules that occur later on the module search path. In the simplest case, __init__.py can just be an empty file, but it can also execute initialization code for the package or set the __all__ variable, described later.

В * nix также убедитесь, что PYTHONPATH настроен правильно, особенно, что он имеет этот формат:

 .:/usr/local/lib/python

(Обратите внимание на .: вначале, чтобы он мог искать и в текущем каталоге.)

Он также может быть в других местах, в зависимости от версии:

 .:/usr/lib/python
 .:/usr/lib/python2.6
 .:/usr/lib/python2.7 and etc.

Также это может быть .:/usr/lib/python, .:/usr/lib/python2.6, .:/usr/lib/python2.7 и др. В зависимости от версии.

Nikita Volkov 16.04.2012 12:26

Для меня модуль находится в /usr/local/lib/python3.4/dist-packages, но когда я набираю python3 в терминале (ubuntu) и пытаюсь импортировать его, это не позволяет мне, говоря, что это не существует. «ImportError: модуль x не существует»

user65165 24.08.2016 17:53

Добавление #!/usr/bin/python в конец файла тоже должно работать, верно?

Nearoo 06.11.2016 16:32

@Nearoo Не думаю, что это сработает. Плюс обычно этот шебанг добавляется вверху файла.

Renaud 09.11.2016 14:05
-1 Наличие каталога установки Python, указанного в PYTHONPATH, явно неверно и свидетельствует о непонимании того, для чего предназначена эта переменная.
Piotr Dobrogost 12.01.2017 16:08

В MacOSX исправлено, добавив PYTHONPATH = / usr / local / lib / python2.7 / site-packages в сценарии запуска.

Johan Snowgoose 12.04.2017 23:16

В моем случае проблема заключалась в том, что я связывал отлаживатьpython и boost::Python, что требует, чтобы расширение было FooLib_d.pyd, а не только FooLib.pyd; переименование файла или обновление свойств CMakeLists.txt устранили ошибку.

  1. У вас должен быть файл __ init__.py в том же каталоге, где это файл, который вы импортируете.
  2. Вы не можете пытаться импортировать файл с таким же именем, который является файлом из 2 папок, настроенных на PYTHONPATH.

например: / и т.д. / окружающая среда

PYTHONPATH = $ PYTHONPATH: / opt / folder1: / opt / folder2

/ opt / folder1 / foo

/ opt / folder2 / foo

И, если вы пытаетесь импортировать файл foo, python не узнает, какой из них вам нужен.

from foo import ... >>> importerror: нет модуля с именем foo

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

(ПРИМЕЧАНИЕ. Исходя из вашего первоначального сообщения, я предполагаю, что вы используете машину на базе * NIX и запускаете что-то из командной строки, поэтому этот совет адаптирован для этого. Поскольку я запускаю Ubuntu, это то, что я сделал)

1) Измените каталог (cd) на каталог выше - каталог, в котором находятся ваши файлы. В этом случае вы пытаетесь запустить файл mountain.py и пытаетесь вызвать модуль toolkit.interface.py, который находится в разных каталогах. В этом случае вы должны перейти в каталог, содержащий пути к обоим этим файлам (или, другими словами, в ближайший каталог, в котором находятся пути к обоим этим файлам). В данном случае это каталог toolkit.

2) Когда вы находитесь в каталоге tookit, введите эту строку кода в свою командную строку:

export PYTHONPATH=.

Это устанавливает для вашего PYTHONPATH значение ".", Что в основном означает, что ваш PYTHONPATH теперь будет искать любые вызываемые файлы в каталоге, в котором вы сейчас находитесь (и, что более важно, в филиалы подкаталога каталога, в котором вы находитесь. Так что это не так. не просто смотреть в ваш текущий каталог, а во все каталоги, которые являются в вашим текущим каталогом).

3) После того, как вы установили PYTHONPATH на шаге выше, запустите свой модуль из текущего каталога (каталога toolkit). Python теперь должен найти и загрузить указанные вами модули.

Надеюсь это поможет. Я сам был очень расстроен этим.

Или в Windows set PYTHONPATH=..

cjbarth 28.08.2014 17:08

Это сработало для меня. Также ПОЛНОСТЬЮ упростил мои разочарования в PYTHONPATH, поскольку мне приходилось обновлять его до абсолютного пути каждый раз, когда я переключаю машины. Спасибо Спасибо спасибо.

the_e 15.06.2016 19:17

Будьте осторожны, если у вас есть ссылки на сторонние или пользовательские библиотеки в уже существующей переменной среды PYTHONPATH. Если вы сделаете это вместо этого, запустите: set PYTHONPATH=%PYTHONPATH%;.;, чтобы добавить . к PYTHONPATH, а затем echo %PYTHONPATH%, который должен отобразить path\to\custom\library;.;. Затем запустите приложение из каталога приложений с помощью python applicationlaunchfile.py.

EliSquared 08.12.2020 00:12

Linux: импортированные модули находятся в /usr/local/lib/python2.7/dist-packages

Если вы используете модуль, скомпилированный на C, не забудьте изменить chmod для файла .so после sudo setup.py install.

sudo chmod 755 /usr/local/lib/python2.7/dist-packages/*.so

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

Самый простой способ, который я нашел для этого, заключался в том, чтобы перейти в папку моего проекта в проводнике Windows и найти *.pyc, затем выбрать все (Ctrl + A) и удалить их (Ctrl + X).

Возможно, я мог бы решить свои проблемы, просто удалив конкретный файл pyc, но я никогда не пробовал это

Мои два цента:

Плевать:

Traceback (most recent call last):
      File "bash\bash.py", line 454, in main
        import bosh
      File "Wrye Bash Launcher.pyw", line 63, in load_module
        mod = imp.load_source(fullname,filename+ext,fp)
      File "bash\bosh.py", line 69, in <module>
        from game.oblivion.RecordGroups import MobWorlds, MobDials, MobICells, \
    ImportError: No module named RecordGroups

Это меня до чертиков смутило - просмотрел посты и посты, предлагающие уродливые взломы syspath (как вы видите, все мои __init__.py были там). Что ж, оказывается, что game / Oblivion.py и game / Oblivion сбивали с толку питон которые выдавали довольно бесполезную фразу «Нет модуля с именем RecordGroups». Мне было бы интересно найти обходной путь и / или ссылки, документирующие это (одноименное) поведение -> EDIT (2017.01.24) - взгляните на Что делать, если у меня есть модуль и пакет с тем же именем?. Интересно, что обычно пакеты имеет приоритет, но, очевидно, наша программа запуска нарушает это.

РЕДАКТИРОВАТЬ (2015.01.17): я не упоминал, что мы используем кастомная пусковая установка, рассеченный здесь.

больше похоже на то, что путь отключен. game.oblivion.RecordGroups !== game/oblivion/patchers/RecordGroups.py Может потребоваться исправить это, добавив свой код Python для использования: game.oblivion.patchers.RecordGroups

Dwight Spencer 12.10.2015 20:27

@DwightSpencer: я уверен, что импортировал "RecordGroups" в game.oblivion.__init__.py, но, возможно, придется это проверить

Mr_and_Mrs_D 12.10.2015 21:09

Я столкнулся с той же проблемой: Import error. К тому же библиотека установлена ​​на 100% правильно. Источником проблемы было то, что на моем ПК была установлена ​​3 версия python (пакет anaconda)). Поэтому библиотека была установлена ​​не в нужное место. После этого я просто перешел на правильную версию python в моей IDE PyCharm.

Исправил мою проблему, написав print (sys.path) и обнаружив, что python использует устаревшие пакеты, несмотря на чистую установку. Удаление этих созданных python автоматически использует правильные пакеты.

У меня была такая же ошибка. Это было вызвано тем, что кто-то создал папку в той же папке, что и мой скрипт, имя которой противоречило имени модуля, который я импортировал из другого места. Вместо того, чтобы импортировать внешний модуль, он заглянул внутрь этой папки, которая явно не содержала ожидаемых модулей.

Используя PyCharm (часть пакета JetBrains), вам необходимо определить каталог вашего скрипта как Source:
Right Click > Mark Directory as > Sources Root

Если вы пробовали все методы, представленные выше, но не смогли, возможно, ваш модуль имеет то же имя как встроенный модуль. Или модуль с то же имя, существующий в папке, которая имеет более высокий приоритет в sys.path, чем ваш модуль.

Для отладки скажите, что ваши from foo.bar import baz жалуются на ImportError: No module named bar. Переход на import foo; print foo, который покажет путь к foo. Вы этого ожидаете?

Если нет, либо переименуйте foo, либо используйте абсолютный импорт.

Для меня это дает ImportError: No module named foo.

alex 11.10.2017 14:44

простое решение - установить модуль с использованием python -m pip install <library-name> вместо pip install <library-name> вы можете использовать sudo в случае ограничений администратора

Чего добивается python -m перед pip install?

sporc 13.02.2018 10:39

@sporc - когда вы используете флаг командной строки -m, Python импортирует для вас модуль или пакет, а затем запускает его как скрипт. Если вы не используете флаг -m, названный вами файл запускается как скрипт.

Tony Ciccarone 30.03.2018 19:46

Не уверен, что этот ответ пытается сказать о работе python -m pip..., но pip... этого не сделал: они фактически одно и то же, если предположить, что они на самом деле находятся в одном каталоге python. Возможно, наблюдаемая ситуация заключалась в том, что автономная программа pip не была доступна в некоторых более старых версиях Python (но теперь она есть в последних версиях 2.7 и 3.x). В этом случае python находился в локальном virtualenv, а pip - нет, поэтому python -m pip install будет установлен в локальном virtualenv, тогда как pip попытается установить в системном python (и потерпит неудачу без sudo). В любом случае это не имеет смысла.

michael 20.09.2018 04:23

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

У меня была такая же проблема (Python 2.7 Linux), я нашел решение и хотел бы им поделиться. В моем случае у меня была структура ниже:

Booklet
-> __init__.py
-> Booklet.py
-> Question.py
default
-> __init_.py
-> main.py

В main.py я безуспешно пробовал все комбинации ниже:

from Booklet import Question
from Question import Question
from Booklet.Question import Question
from Booklet.Question import *
import Booklet.Question
# and many othet various combinations ...

Решение оказалось намного проще, чем я думал. Папку «Буклет» переименовал в «Буклет» и все. Теперь Python может импортировать класс Question в обычном режиме, используя в main.py код:

from booklet.Booklet import Booklet
from booklet.Question import Question
from booklet.Question import AnotherClass

Из этого я могу сделать вывод, что имена пакетов (папок), такие как «буклет», должны начинаться с нижнего регистра, иначе Python путает это с именами классов и именами файлов.

По-видимому, это была не ваша проблема, но ответ Джон Фухи очень хорош, и в этом потоке есть почти все, что может вызвать эту проблему. Итак, это еще одна вещь, и я надеюсь, что, возможно, это поможет другим.

В моем случае я указывал путь к папке package.egg, а не к фактическому пакету внизу. Я скопировал пакет на верхний уровень, и он сработал.

Вы читаете этот ответ, в котором говорится, что ваш __init__.py находится в нужном месте, вы установили все зависимости, и вы все еще получаете ImportError.

Я столкнулся с аналогичной проблемой, за исключением того, что моя программа работала нормально при запуске с использованием PyCharm, но указанная выше ошибка, когда я запускал ее с терминала. Покопавшись дальше, я обнаружил, что PYTHONPATH не имеет записи для каталога проекта. Итак, я установил PYTHONPATH на Оператор импорта работает с PyCharm, но не с терминала:

export PYTHONPATH=$PYTHONPATH:`pwd`  (OR your project root directory)

Есть другой способ сделать это, используя sys.path как:

import sys
sys.path.insert(0,'<project directory>') OR
sys.path.append('<project directory>')

Вы можете использовать вставку / добавление в зависимости от порядка, в котором вы хотите, чтобы ваш проект просматривался.

Это то, что я сделал в качестве обходного пути. Но я до сих пор не понимаю, зачем это нужно. В моем файле Pipfile есть модуль относительного пути, который не может быть обнаружен (например, я получаю ImportError) без указанного обходного пути.

Kevin Friedheim 19.03.2021 17:47

В моем случае, поскольку я использую PyCharm, и PyCharm создают «venv» для каждого проекта в папке проекта, но это всего лишь мини-env для python. Хотя вы установили необходимые библиотеки в Python, но в вашем пользовательском проекте venv они недоступны. Это настоящая причина ImportError: в PyCharm не было модуля с именем xxxxxx. Чтобы решить эту проблему, вы должны добавить библиотеки в пользовательский env вашего проекта, выполнив следующие действия:

  • В PyCharm из меню «Файл» -> «Настройки».
  • В диалоговом окне настроек выберите Project: XXXProject-> Project Interpreter.
  • Нажмите кнопку «Добавить», откроется диалоговое окно «Доступные пакеты».
  • Найдите свою библиотеку, нажмите «Установить пакет».
  • Затем все необходимые вам пакеты будут установлены в папку «venv» вашего проекта.

Settings dialog

Наслаждаться.

Это сработало для меня: Создал файл __init__.py внутри родительской папки (в вашем случае внутри папки site-packages). И импортировал вот так:

from site-packages.toolkit.interface import interface

Надеюсь, это будет полезно и для вас!

Всем тем, у кого еще есть эта проблема. Я считаю, что Pycharm путают с импортом. Для меня, когда я пишу «from namespace import something», предыдущая строка подчеркивается красным цветом, сигнализируя об ошибке, но работает. Однако «from .namespace import something» не подчеркивается, но и не работает.

Пытаться

try:
    from namespace import something 
except NameError:
    from .namespace import something

Первый - это синтаксис Python 2, второй - Python 3.

Tanya Branagan 02.08.2019 16:37

Для меня это было действительно глупо. Я установил библиотеку, используя pip3 install, но запускал свою программу как python program.py, а не python3 program.py.

Ты спас мне день.

Aymen 11.05.2020 14:49

На сервере linux попробуйте dos2unix script_name

(удалите все (если есть) файлы pyc командой find . -name '*.pyc' -delete)

и повторно запустить в том случае, если вы работали над скриптом в Windows

В моем случае я использовал sys.path.insert() для импорта локального модуля и получал module not found из другой библиотеки. Мне пришлось поместить sys.path.insert() ниже импорта, который сообщил о module not found. Я думаю, что лучше всего поместить sys.path.insert() в конец вашего импорта.

Если вы используете сценарий / утилиту установки (например, setuptools) для развертывания пакета, не забудьте добавить соответствующие файлы / модули в установщик.


Если поддерживается, используйте find_packages() или аналогичный для автоматического добавления новых пакетов в сценарий установки. Это абсолютно избавит вас от головной боли, особенно, если вы отложите свой проект на некоторое время, а затем добавите что-нибудь позже.

import setuptools

setuptools.setup(
    name = "example-pkg",
    version = "0.0.1",
    author = "Example Author",
    author_email = "[email protected]",
    description = "A small example package",
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3",
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.6',
)

(Пример взят из документация setuptools)

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

Другие вопросы по теме