23

我可以在脚本中严格地从 PyPi 下载和安装 Python 模块,而不使用 shell

我使用非标准 Python 环境,Autodesk Maya 的 Python 解释器。这不附带“easy_install”,也没有“shell”,只有一个由 Maya 主可执行文件调用的 python 脚本解释器。将 ez_setup.py 的内容复制并粘贴到脚本编辑器窗口并正确运行它会将 easy_install 安装到 Maya 目录的某个位置,但脚本错误地将 Python 解释器记录为“...maya.exe”而不是“...mayapy.exe” " 此外,使用 easy_install 需要一个 shell。

目标是提供一个 Python 脚本,例如,将 NumPy 安装到 Maya Python 系统中。这可以通过将鸡蛋放入站点包目录来完成,但这需要手动用户干预。最终用户必须在 Maya 环境之外执行的任何操作基本上都是不可触碰的,尤其是对文件系统的干扰。但是通过脚本弄乱文件系统?没关系。

有没有比 ez_setup.py + 编辑生成的 easy_install...py 的 + 子进程调用更优雅的东西?我觉得这是一个基本功能。我在网上看到了通过 pip 进行编程模块安装的文档......但是需要先安装 pip!

在脚本范围内严格安装模块的最优雅方法是什么?

4

3 回答 3

18

Installing easy_install for Maya on windows.

  1. Download ez_setup.py.
  2. open windows cmd elevated (start, type cmd, rmb click on it ->run as administrator)
  3. change the cmd directory to x:\maya install dir\bin
    • example: cd c:\Program Files\MayaXX\bin
  4. execute following command mayapy x:\WhereYouSaved\ez_setup.py

Now easy install should be set up properly. You may want to still do following steps:

  1. cd x:\maya install dir\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
    • rmb my computer and choose properties
    • Advanced system settings -> Environment variables
    • search variable path edit it and append ;x:\maya install dir\python\scripts

Now you can call maeasy_install pythonModule from cmd for installing stuff. Also you can call following inside Maya to install modules:

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

NOTE: If Maya is installed in program files then you can not really install stuff without elevating. Unless you change disk permissions to the Maya python directory.

于 2012-10-22T17:46:47.077 回答
11
#!/usr/bin/env python

from __future__ import print_function

REQUIREMENTS = [ 'distribute', 'version', 'Cython', 'sortedcollection' ]
try:
    from setuptools import find_packages
    from distutils.core import setup
    from Cython.Distutils import build_ext as cython_build
    import sortedcollection
except:
    import os, pip
    pip_args = [ '-vvv' ]
    proxy = os.environ['http_proxy']
    if proxy:
        pip_args.append('--proxy')
        pip_args.append(proxy)
    pip_args.append('install')
    for req in REQUIREMENTS:
        pip_args.append( req )
    print('Installing requirements: ' + str(REQUIREMENTS))
    pip.main(initial_args = pip_args)

    # do it again
    from setuptools import find_packages
    from distutils.core import setup
    from Cython.Distutils import build_ext as cython_build
    import sortedcollection
于 2013-08-02T15:05:47.450 回答
1

要使其工作,请打开ez_setup.py文件并在此行添加一个safter :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]
于 2018-07-07T12:54:38.510 回答