如何以编程方式/通过Python脚本安装Python模块?

时间:2012-10-19 01:30:18

标签: python pip distutils easy-install maya

我可以严格地在脚本中从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系统中。这可以通过将egg放入site-packages目录来完成,但这需要手动用户干预。最终用户在Maya环境之外必须做的任何事情基本上是不可触及的,尤其是弄乱文件系统。但是通过脚本搞乱文件系统?没关系。

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

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

3 个答案:

答案 0 :(得分:17)

在Windows上为Maya安装easy_install。

  1. 下载ez_setup.py
  2. 打开windows cmd提升(开始,输入 cmd rmb 点击它 - >以管理员身份运行)
  3. 将cmd目录更改为x:\ maya install dir \ bin
    • 示例:cd c:\ Program Files \ MayaXX \ bin
  4. 执行以下命令mayapy x:\ WhereYouSaved \ ez_setup.py
  5. 现在应该正确安装。您可能还想继续执行以下步骤:

    1. cd x:\ maya install dir \ python \ scripts
    2. 将此文件夹中的所有文件重命名为以ma开头
      • 示例:对于(*)中的%i,请执行%i ma%i
    3. 将此文件夹添加到您的路径中
      • 击中win + e
      • rmb 我的电脑并选择属性
      • 高级系统设置 - >环境变量
      • 搜索变量路径编辑并追加; x:\ maya install dir \ python \ scripts
    4. 现在您可以从cmd调用 maeasy_install pythonModule 来安装内容。您也可以在Maya内部调用以安装模块:

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

      注意:如果Maya安装在程序文件中,那么在没有提升的情况下就无法真正安装。除非您将磁盘权限更改为Maya python目录。

答案 1 :(得分:10)

#!/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

答案 2 :(得分:1)

要使其正常工作,请打开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]