2013-06-21 2 views
5

Я сделал себе небольшой модуль, который, как мне кажется, довольно много используется. Всякий раз, когда это необходимо, я просто копирую его в папку, в которой я хочу ее использовать. Поскольку я ленив, я хотел установить его так, чтобы я мог его вызывать из любого места, даже в интерактивную подсказку. Поэтому я немного прочитал об установке здесь и пришел к выводу, что мне нужно скопировать файл в /usr/local/lib/python2.7/site-packages. Это, однако, похоже, ничего не делает.Как сделать мой модуль Python доступным для системы на Linux?

Кто-нибудь знает, где мне нужно скопировать мой модуль, чтобы он работал с системой в целом?

+1

См. [Документация модуля сайта] (http://docs.python.org/2/library/site.html#module-site). Вам нужно добавить файл конфигурации «.pth» в один из каталогов. – martineau

ответ

8

Существуют способы установки модулей Python в системном масштабе. Вы можете взглянуть на distutils. Хороший учебник для distutils2 (текущая версия) можно найти here.

Вы в основном должны написать файл setup.py, который сообщает distutils, что делать. Затем вы можете просто

python setup.py install 

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

+0

Я уже видел эту опцию, но я думал, что это не понадобится для создания этого сценария установки, если бы я мог просто сделать «mv mymodule.py/some/directory». Нет ли простого способа без создания всего этого сценарий установки? – kramer65

+0

Наверное, этого достаточно, чтобы скопировать его в какой-то каталог, который содержится в sys.path, как вы уже пробовали. Тем не менее, есть некоторые другие вещи, о которых вам нужно позаботиться (например, разрешения на файлы, вы их проверяли?), И, возможно, вам нужно разместить ссылку на свой модуль где-то в другом месте (я ничего не знаю об этом). –

+0

Итак, как сделать 'python setup.py install' для копирования кода на' site-packages'? – Dims

1

Если вы используете Ubuntu, скопируйте файлы в /usr/local/lib/python2.7/dist-packages. Следующая команда покажет вам, где копировать.

python -c "from distutils.sysconfig import *; print(get_python_lib())" 

Если вы только один использовать модуль, копировать файлы ~/.local/lib/python2.7/site-packages.

+0

Эта команда дала мне /usr/lib/python2.7/dist-packages, поэтому я переместил туда свой файл. Когда я сейчас вхожу в интерактивную подсказку Python и пытаюсь импортировать mymodule, я все равно получаю ImportError .. – kramer65

+1

@ kramer65, я загрузил screencast на http://ascii.io/a/3713. – falsetru

+0

Это правильный ответ. вы можете поместить символическую ссылку на вывод местоположения здесь, и он будет работать немедленно. – v4gil

1

В одном из каталогов, перечисленных при вводе sys.path в вашем приглашении на Python. Можно также добавить каталог, который содержит файл с помощью модифицирования переменной PYTHONPATH среды:

# ~/.bashrc file 
export PYTHONPATH+=:/some/dir 
+0

/usr/lib/python2.7/dist-packages также находится в sys.path, но когда я перемещаю свой файл и пытаюсь импортировать его из приглашения интерактивного python, я все равно получаю ImportError .. – kramer65

+0

@ kramer65: тогда ваш import, вероятно, неверно. – michaelmeyer

+0

Имя файла mymodule.py и имеет доступные разрешения. В интерактивной командной строке Python я просто набираю «import mymodule». Может ли быть что-то не так с этим? – kramer65

3

Ответ: это все о разрешениях.

Это не достаточно, чтобы поместить файл в нужном месте, как, например, экземпляр: /usr/local/lib/python2.7/dist-packages, вы также должны убедиться, что файл может быть прочитан процесс, в котором вы работаете, в данном случае, python.

Убедитесь, что у «других» пользователей есть доступ к файлу. Откройте консоль Баш и выполнить это:

sudo chmod o+r "yourmodule.py" 
[Introduce the password] 

После этого возвращайся питона и попробовать импорт:

import "yourmodule" 

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

0

Пара вещей.

Сначала модуль должен (я считаю), находиться в директории, соответствующей имени модуля.

Поместите этот каталог модуля в один из каталогов в PYTHONPATH (я использую /usr/lib/pymodules/pythonV.x/).Вы можете найти подходящую директорию в пути, используя

с подсказки python.