pychrm не может импортировать мой собственный пакет, но терминал может - PullRequest
0 голосов
/ 10 мая 2019

Проблема решена.
Если вы добавите свой путь к PYTHONPATH, вы можете импортировать пакеты внутри этого пути.Но я пытаюсь импортировать этот путь, это неправильно.
Так что в этом случае я создаю на своем пути вспомогательный каталог, и теперь этот каталог является пакетом, который можно импортировать.
Тем не менее, я долженвключить мой путь в файл> настройки> структура проекта в качестве источника.

=========================================================================
Я использую python3.6 в Anaconda, Ubuntu16.04.
У меня есть собственный пакет по пути /home/gph/pyutils_gph.
Внутри этого каталога находятся файлы utils.py.Я включил этот путь в PYTHONPATH.
Я могу сделать

Python 3.6.8 |Anaconda, Inc.| (default, Dec 30 2018, 01:22:34) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyutils_gph import utils
>>> 

в терминале.Но тот же код импорта показывает ошибку в pycharm.Он может найти мой пакет, обозначив его красными линиями.
Что еще я должен сделать, чтобы pycharm узнал мой собственный пакет?

=========================================================================

Я открыл терминал внутри pycharm, получаю вывод, как показано ниже.У меня есть этот каталог в PYTHONPATH, но я не могу его импортировать.Что не так?

Python 3.6.8 |Anaconda, Inc.| (default, Dec 30 2018, 01:22:34) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/gph/pyutils_gph', '/home/gph/Desktop/BorderSecure/detection_cnn/src', '/home/gph/anaconda3/envs/py36_torch0.4/lib/python36.zip', '/home/gph/anaconda3/envs/py36_torch0.4/lib/python3.6', '/home/gph/anaconda3/envs/py36_torch0.4/lib/python3.6/lib-dynload', '/home/gph/anaconda3/envs/py36_torch0.4/lib/python3.6/site-packages']
>>> from pyutils_gph import utils
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pyutils_gph'
>>> 

1 Ответ

0 голосов
/ 10 мая 2019

Если у вас есть /home/gph/pyutils_gph в PYTHONPATH, а у вас from pyutils_gph import utils, тогда он ищет

"/home/gph/pyutils_gph/" + "pyutils_gph/utils.py` 

потому что from pyutils_gph import utils означает pyutils_gph/utils.py и добавляет его к каждому пути из PYTHONPATH


Вы должны добавить к PYTHONPATH

/home/gph

и тогда это даст

"/home/gph/" + "pyutils_gph/utils.py` 

чтобы вы получили правильный путь


Первая версия может работать в терминале, если вы запустите Anaconda в папке /home/gph, потому что Python ищет пакеты также в текущем рабочем каталоге, поэтому находит pyutils_gph/utils.py непосредственно в /home/gph без использования PYTHONPATH

Если вы перейдете в другую папку, она не найдет локальную pyutils_gph/utils.py, и вы получите ту же ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...