Чтобы обобщить мое понимание вашей цели, вы хотите иметь возможность импортировать пользовательские пакеты, используя import custom_package_name
независимо от того, откуда вы вызываете python и где бы ни находился ваш скрипт python.
В ряде ответов упоминается то, что я собираюсь описать, но я чувствую, что большинство ответов предполагают много предыдущих знаний. Я постараюсь быть максимально откровенным.
Чтобы достичь цели, позволяющей импортировать пользовательские пакеты с помощью оператора import
, их необходимо обнаружить где-то по пути, который Python использует для поиска пакетов. Python на самом деле использует несколько путей, но мы сосредоточимся только на том, который можно найти, комбинируя вывод sys.prefix
(в вашем интерпретаторе python) с /lib/pythonX.Y/site-packages
(или lib/site-packages
, если вы используете windows), где XY - твоя версия на питоне.
Конкретно, найдите путь, который использует ваш питон, запустив:
import sys
your_path = sys.prefix + '/lib/pythonX.Y/site-packages'
print(your_path)
Этот путь должен выглядеть примерно так: /usr/local/lib/python3.5/site-packages
, если вы используете Python 3.5, но он может сильно отличаться в зависимости от ваших настроек.
Python использует этот путь (и несколько других) для поиска пакетов, которые вы хотите импортировать. Итак, вы можете поместить свои пользовательские пакеты в папку /usr/local/lib/python3.5/site-packages
. Не забудьте добавить в папку файл init .py.
Чтобы снова быть конкретным, в терминале:
cd your_path
cp path_to_custom_package/custom_package ./
Теперь вы сможете импортировать все свои собственные пакеты, как если бы пакет находился в одном каталоге (т. Е. import package.subpackage
для каждого файла подпакета в вашем пакете должно работать).