Python: как / где разместить простую библиотеку, установленную в известном месте на моем компьютере - PullRequest
3 голосов
/ 17 мая 2010

Мне нужно поместить скрипт Python где-нибудь на моем компьютере, чтобы в другом файле я мог его использовать. Как мне это сделать и куда мне это поставить? И где в документации по Python я узнаю, как это сделать? Я новичок + не часто использую Python.


файл библиотеки: MyLib.py положил в известное место

def myfunc():
   ....

другой файл SourceFile.py, расположенный в другом месте, не нужно знать, где находится MyLib.py:

something = MyLib.myfunc()

Ответы [ 6 ]

7 голосов
/ 17 мая 2010

Вариант 1:

Поместите ваш файл по адресу: <Wherever your Python is>/Lib/site-packages/myfile.py

Добавьте это к своему коду:

import myfile

Плюсы: Легко

Минусы: Беспорядок на сайтах-пакетах

Вариант 2:

Разместите ваш файл по адресу: /Lib/site-packages/mypackage/myfile.py

Создать пустой текстовый файл с именем: <Wherever your Python is>/Lib/site-packages/mypackage/__init__.py

Добавьте это к своему коду:

from mypackage import myfile

Плюсы: уменьшает беспорядок в пакетах сайтов, сохраняя ваши данные в одном каталоге

Минусы: немного больше работы; еще какой-то беспорядок в сайт-пакетах. Это не плохо для стабильных вещей, но может рассматриваться как неподходящее для разработки, и может быть невозможно, если Python установлен на общем диске

Вариант 3

Поместите файл в любой каталог, который вам нравится

Добавить этот каталог в переменную окружения PYTHONPATH

Продолжайте как с вариантом 1 или вариантом 2, за исключением замены каталога, который вы только что создали для <Wherever your Python is>/Lib/site-packages/

Плюсы: Хранит код разработки в каталоге site-packages

Минусы: немного больше настроек

Этот подход я обычно использую для разработки

4 голосов
/ 17 мая 2010

В общем, раздел Modules в руководстве по Python является хорошим введением для начинающих по этой теме. Здесь объясняется, как писать свои собственные модули и где их размещать, но я кратко изложу ответ на ваш вопрос ниже:

В вашей установке Python есть каталог site-packages; любой файл python, который вы поместите в этот каталог, будет доступен любому написанному вами сценарию. Например, если вы поместите файл MyLib.py в каталог site-packages, то в вашем скрипте вы можете сказать

import MyLib
something = MyLib.myfunc()

Если вы не уверены, где установлен Python, вам может помочь вопрос о переполнении стека Как мне найти расположение моей директории пакетов сайта Python .

Кроме того, вы можете изменить sys.path , который представляет собой список каталогов, в которых Python ищет библиотеки при использовании оператора import. Ваша директория site-packages уже находится в этом списке, но вы можете добавлять (или удалять) записи самостоятельно. Например, если вы хотите поместить файл MyLib.py в /usr/local/pythonModules, вы можете сказать

import sys
sys.path.append("/usr/local/pythonModules")
import MyLib
something = MyLib.myfunc()

Наконец, вы можете использовать переменную окружения PYTHONPATH , чтобы указать каталог, в котором находится ваш MyLib.py.

Однако я рекомендую просто поместить файл MyLib.py в каталог site-packages, как описано выше.

3 голосов
/ 18 мая 2010

Никто не упомянул использование .pth файлов в пакетах сайта для отвлечения местоположения.

2 голосов
/ 17 мая 2010

Вам нужно будет поместить MyLib.py где-нибудь в вашем пути загрузки (это пути в вашей переменной sys.path), и тогда вы сможете нормально его импортировать. Ваш код будет выглядеть как

import MyLib
MyLib.myfunc()

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

Кроме того, вы можете не захотеть устанавливать пакеты в вашей глобальной установке Python. Обычно (и рекомендуется) использовать virtualenv , который можно использовать для создания небольших изолированных сред Python, которые могут содержать локальные пакеты.

Лучше всего, если вы попробуете, а затем задать дополнительные вопросы, если они у вас есть.

1 голос
/ 17 мая 2010

В разделе 6 учебного руководства по Python говорится о модулях, а в 6.1.2 - о PYTHONPATH, который определяет, где Python будет искать модули, которые вы пытаетесь импортировать. Учебник: http://docs.python.org/tutorial/modules.html

1 голос
/ 17 мая 2010

Частная версия, от моего .profile

export PYTHONPATH=${PYTHONPATH}:$HOME/lib/python

, который имеет подкаталог "msw", поэтому import msw.primes самодокументируется или добавляется в локальный каталог, который уже находится в sys.path

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