Импорт не просматривает pythonpath при импорте личных модулей

Я создал свой собственный пакет с именем «XXX» на своем компьютере, установив файл __init__.py в папке C:\path\to\module\XXX, который содержит мой скрипт Python. Затем я вручную добавил C:\path\to\module\XXX в свой путь к python. Когда я запускаю python в командной строке cmd и пытаюсь импортировать модуль, он терпит неудачу. Когда я печатаю sys.path, он содержит C:\path\to\module\XXX. Если я пытаюсь загрузить некоторые другие личные модули, возникает та же проблема, но когда я пытаюсь загрузить не свой модуль, установленный с pip (т.е. numpy), он работает отлично. Итак, я предполагаю, что по какой-то причине python больше не просматривает мой путь к python для загрузки модуля.

Я использую anaconda с python 3.6.5 с виртуальной средой в Windows 7. Python устанавливается с anaconda через репозиторий conda-forge.

Я протестировал эту проблему с несколькими подходами, сначала запустив приведенный ниже скрипт с Pycharm, а затем с Spider. Затем я использовал приглашение anaconda для запуска команд вручную, активирующих сначала мою виртуальную среду. Наконец, я выполнил команды в командной строке DOS с помощью python. Как бы то ни было, результаты были одинаковыми. Эта ошибка возникла после установки fbprohete в моей виртуальной среде. До этого я мог импортировать свои модули. Я попытался удалить этот модуль, но проблема осталась прежней. Во время установки fbprohet добавляется много беспорядка. После установки я запустил команду conda clean для очистки среды, но это не помогло. Я подозреваю, что сейчас что-то повреждено, но я бы хотел избежать переустановки всего. Если у вас есть идея, где искать, какой именно модуль должен быть поврежден, буду рад узнать об этом больше.


 import sys

 sys.path

['', 'C:\path\to\module\XXX', ...]

 import XXX

ModuleNotFoundError: No module named 'XXX'

В приведенном выше сценарии я ожидаю, что модуль будет загружен без ошибок, поскольку путь к пакету находится в пути python, а __init__.py находится в папке C:\path\to\module\XXX

Спасибо!


person Cunningham    schedule 11.09.2019    source источник
comment
sys.path содержит каталоги, которые python просматривает в для поиска модуля. У вас в системе C:\path\to\module\XXX\XXX.py или C:\path\to\module\XXX\XXX\__init__.py? Если нет, вы, вероятно, захотите иметь C:\path\to\module и не C:\path\to\module\XXX в sys.path   -  person Giacomo Alzetta    schedule 11.09.2019
comment
Да вы правы. Я заменил C:\path\to\module\XXX на C:\path\to\module и все заработало. Это было немного глупо с моей стороны, извините...   -  person Cunningham    schedule 11.09.2019


Ответы (1)


Так что на самом деле это было немного глупо. Я должен был заменить C:\path\to\module\XXX на C:\path\to\module в пути к python, потому что __ini__.py находится в папке C:\path\to\module\XXX. Спасибо, Джакомо Альзетта, за ваш комментарий.

person Cunningham    schedule 11.09.2019