2010-08-25 3 views
3

Как проверить, успешно ли установлен мой модуль Python.Установлен или не установлен модуль Python?

я сделал:

python setup.py install 

внутри папки, где был загружен мой модуль.

Теперь я вижу, что это привело к папке внутри этого места:

/usr/lib/python2.4/site-packages (I can see my module folder is inside here) 

Теперь я использую PHP, чтобы выполнить скрипт из этого модуля:

exec("/usr/bin/python /usr/lib/python2.4/site-packages/MyModule/myModule script.py -v pixfx.xml 2>&1", $output, $return); 

Это запускает скрипт .py, но не загружает модули, которые требуется для этого скрипта. Этот скрипт имеет такой код:

#! /usr/bin/env python 
import sys 
import os 
import getopt 
import re 
from myModule.ttLib import TTFont // this is line60 as I have removed comments 

Я получаю эту ошибку:

Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/MyModule/myModule/script.py", line 60, in ? from myModule.ttLib import TTFont ImportError: No module named myModule.ttLib 

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

Я также попытался сделать это в SSH терминале:

help('modules') 

Это охраняемое нагрузку модулей, но мое имя модуля не хватает ,

Любая помощь?

****** EDIT {Solved} ****** Переустановка модуля решила его. Свое смешное что я использовал инструмент SSH онлайн обеспечил Mediatemple, он не установил модуль правильно. Позже, когда я установил терминал с моего компьютера Mac, все сработало.

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

Благодаря

+1

Привет, Вы посмотрели мою историю вопроса? Whereever У меня есть удовлетворительный ответ, я его принял. Если нет, мне не нужно ничего принимать, так? – ssdesign

+0

Перейдите в свою оболочку python, введите import yourmodulename и нажмите enter, если он успешно запущен без каких-либо ошибок, установленный вашим модулем, и пути установлены правильно. –

+0

ОК, я попробую это, прямо сейчас мой компьютер не может подключиться к Shell. через некоторое время придется пробовать домой. – ssdesign

ответ

1

Вы можете проверить, что интерпретатор Python, что вы звоните видит ваш модуль, выполнив:

/usr/bin/python -c "import MyModule" 

Эта команда должна просто импортировать MyModule/__init__.py и не жалуются MyModule не найдено.

Поскольку в вашем коде много модулей, вы на самом деле хотите создать пакет , а не модуль.

Для этого вы можете просто добавить пустой файл __init__.py в MyModule/и все его подпакеты, чтобы указать, что у вас есть пакет (т. Е. Это папка, содержащая множество модулей).

Если ttLib в MyModule/MyModule/ttLib /, вы можете сделать то же самое и добавить пустой __init__.py файл в MyModule/и MyModule/MyModule /, с тем, чтобы объявить, что MyModule и MyModule/MyModule пакеты; вы можете просто сделать следующее:

from MyModule.myModule.ttLib import … 

Надеюсь, это поможет! Полную документацию по пакетам можно найти on the official site.

+0

Привет, Главный файл, выполняемый в script.py. Что находится в MyModule/myModule. Этот сценарий вызывает другой модуль, который находится внутри MyModule/myModule/ttLib. В папке ttLib есть файл ____init____.py, этот файл содержит класс TTFont. Это класс, который мой script.py пытается вызвать по этой строке кода: «from myModule.ttLib import TTFont» – ssdesign

+0

@ssdesign: Я вижу. Вам нужно поместить (возможно, пустой) '__init __. Py' файл во все три каталога, включая MyModule/и MyModule/myModule/(это делает эти каталоги Python-пакетами). Затем «из MyModule.myModule.ttLib импортировать TTFont' должен работать; это делается на моей машине (обратите внимание на «двойной» «MyModule».префикс myModule') ... – EOL

+0

@ssdesign: PS: Вы можете проверить, что ваш пакет установлен, выполнив '/ usr/bin/python -c" импорт MyModule "'. – EOL

0

Я не эксперт в Python, но один способ отладки это запустить питон строку и сделать import myModule тогда, некоторые простые команды, которая использует конструкцию этого модуля. Если это работает, то установка модуля не является проблемой. Если бы ваш модуль не был установлен.

+0

ОК, я попробую это и дам вам знать, как это происходит. – ssdesign

0

Вы должны увидеть больше, чем просто создание каталога /usr/lib/python2.4/site-packages.

+0

Что именно я должен ожидать увидеть? – ssdesign

+0

Вы должны увидеть подкаталог, соответствующий этому пакету, и вы должны увидеть файлы там, соответствующие реализации этого пакета. Кроме того, если вы явно ссылаетесь на каталог /usr/lib/python2.4, вы должны явно указывать на эту версию python, если вы ее вызываете, вместо того, чтобы предполагать, что версия по умолчанию - 2.4. – Arafangion

+0

Извините за путаницу, я вижу каталог моего модуля и его файлы. И я также пробовал usr/bin/pythong, а также usr/bin/python2.4 .... в обоих случаях модуль не смог импортировать – ssdesign

0

Вы сказали python посмотреть под /usr/lib/python2.4/site-packages/MyModule/ для вашего модуля (ов)? (Вы должны поместить * .pth файл в /usr/lib/python2.4/site-packages/ для этого, или, возможно, вы не должны помещать их в дополнительный каталог.)

Попробуйте следующее в оболочке Python:

>>> import sys 
>>> sys.path 

Что делает это Распечатать? Включает ли он '/usr/lib/python2.4/site-packages/MyModule'?

+0

ЕСЛИ вы посмотрите на PHP exec(), комментируйте мой вопрос, я дал Python - путь модуля. Это верно? потому что команда sace exec() работает в автономном режиме. – ssdesign

+0

См. Вопрос, который я добавил выше ... :) – JanC

0

Я заново установил модуль, и все работает нормально. Кажется, что модуль установлен неправильно.

Смежные вопросы