Как я могу установить модули Python программно/через скрипт Python?

Могу ли я загружать и устанавливать модули Python из PyPi строго внутри скрипта, без использования оболочки вообще?

Я использую нестандартную среду Python, интерпретатор Autodesk Maya Python. Это не идет с «easy_install», и нет никакой «оболочки», только интерпретатор сценария Python, вызываемый основным исполняемым файлом Maya. При копировании и вставке содержимого файла ez_setup.py в окно редактора скриптов и его правильном запуске программа easy_install устанавливается где-то в каталоге Maya, но скрипт неправильно записывает интерпретатор Python как "...maya.exe" вместо "...mayapy.exe". " Кроме того, для использования easy_install требуется оболочка.

Цель состоит в том, чтобы доставить скрипт Python, который, например, устанавливает NumPy в систему Maya Python. Этого можно добиться, поместив яйца в каталог site-packages, но это требует ручного вмешательства пользователя. Все, что конечный пользователь должен делать вне среды Maya, по существу неприкосновенно, особенно возиться с файловой системой. Но возиться с файловой системой через скрипт? Хорошо.

Есть ли что-то более элегантное, чем ez_setup.py + редактирование результирующих вызовов easy_install...py + subprocess? Я чувствую, что это базовая функция. Я вижу в Интернете документацию по установке программных модулей через pip... но сначала нужно установить pip!

Каков самый элегантный способ установить модуль строго в рамках скрипта?


person DoctorPangloss    schedule 19.10.2012    source источник
comment
Работает ли назначение sys.executable пути к mayapy.exe перед запуском ez_setup.py?   -  person icktoofay    schedule 19.10.2012
comment
Спасибо: это исправляет ez_setup, но требует знания, где находится mayapy.exe. Еще взлом пути...   -  person DoctorPangloss    schedule 20.10.2012
comment
Если вам не нужно разрешение зависимостей easy_install, может сработать просто exec()-файл setup.py   -  person millimoose    schedule 22.10.2012


Ответы (3)


Установка easy_install для Maya в Windows.

  1. Загрузите ez_setup.py.
  2. откройте windows cmd с повышенными правами (запустите, введите cmd, rmb нажмите на него -> запустить от имени администратора)
  3. change the cmd directory to x:\maya install dir\bin
    • example: cd c:\Program Files\MayaXX\bin
  4. выполните следующую команду: mayapy x:\WhereYouSaved\ez_setup.py

Теперь простая установка должна быть настроена правильно. Вы можете по-прежнему выполнять следующие шаги:

  1. cd x:\maya установить каталог\python\scripts
  2. rename all files in this folder to start with ma
    • example: for %i in (*) do ren %i ma%i
  3. add this folder to your path
    • hit win+e
    • ПКМ мой компьютер и выберите свойства
    • Расширенные настройки системы -> Переменные среды
    • путь к переменной поиска отредактируйте его и добавьте ;x:\maya install dir\python\scripts

Теперь вы можете вызвать maeasy_install pythonModule из cmd для установки. Также вы можете вызывать внутри Maya следующие модули для установки модулей:

from setuptools.command import easy_install
easy_install.main( ["pythonModule"] )

ПРИМЕЧАНИЕ. Если Maya установлена ​​в программных файлах, вы не сможете установить что-либо без повышения прав. Если вы не измените права доступа к каталогу Maya python.

person joojaa    schedule 22.10.2012
comment
Спасибо. easy_install.main() - это именно то, что я ищу, потому что выполнение модифицированного ez_setup.py внутри Maya также приводит к его установке. - person DoctorPangloss; 13.12.2012

Чтобы это работало, откройте файл ez_setup.py и просто добавьте s после http в этой строке:

DEFAULT_URL     = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]

чтобы он стал

DEFAULT_URL     = "https://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]
person john    schedule 07.07.2018

person    schedule
comment
Это выглядит действительно интересно. Пытается ли это импортировать sortedcollection, и если импортировать не удается, установить пакет? - person DoctorPangloss; 03.08.2013
comment
@DoctorPangloss: Да, правильно. Он пытается импортировать Cython и sortedcollection внутри блока try/catch. В случае сбоя он использует pip для установки зависимостей, перечисленных в REQUIREMENTS. Затем он снова пытается импортировать cython и sortedcollections, что на этот раз должно сработать. - person Richard Gomes; 24.08.2013