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

Doc*_*oss 21 python distutils pip maya easy-install

我可以下载并安装一封来自PyPI Python模块严格意义上的脚本中,不使用外壳在所有

我使用非标准的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!

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

joo*_*jaa 18

在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

现在应该正确安装.您可能还想继续执行以下步骤:

  1. cd x:\ maya install dir\python\scripts
  2. 重命名此文件夹中的所有文件以ma开头
    • 例如:对于(*)中的%i,请执行%i ma%i
  3. 将此文件夹添加到您的路径中
    • 击中胜利+ e
    • rmb我的电脑并选择属性
    • 高级系统设置 - >环境变量
    • 搜索变量路径编辑并追加; x:\ maya install dir\python\scripts

现在你可以从cmd 调用maeasy_install pythonModule来安装东西.您也可以在Maya内部调用以安装模块:

from setuptools.command import easy_install
easy_install.main( ["pythonModule"] )
Run Code Online (Sandbox Code Playgroud)

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


Ric*_*mes 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
Run Code Online (Sandbox Code Playgroud)