2012-10-19 28 views
14

我可以从PyPi下载和安装Python模块吗严格在脚本中,不需要使用外壳就可以了如何以编程方式/通过Python脚本安装Python模块?

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

目标是提供一个Python脚本,例如将NumPy安装到Maya Python系统中。这可以通过将鸡蛋放入网站包目录中来完成,但这需要用户进行手动干预。终端用户在Maya环境之外所做的任何事情基本上都是不可接触的,尤其是与文件系统混淆。但通过脚本搞乱文件系统?没关系。

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

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

+0

在运行'ez_setup.py'之前是否将'sys.executable'分配给'mayapy.exe'的路径? – icktoofay

+0

感谢:修复了'ez_setup',但它需要知道'mayapy.exe'的位置。更多路径入侵... – DoctorPangloss

+1

如果您不需要easy_install的依赖关系解析,只需'exec()' - setup.py'文件可能工作 – millimoose

回答

15

在windows上安装Maya的easy_install。

  1. 下载ez_setup.py
  2. 打开的窗口CMD升高(开始,类型CMD人民币一下就可以了 - >以管理员身份运行)
  3. 变化CMD目录为x:\玛雅安装目录\ BIN
    • 例如: CD C:\ Program Files文件\ MayaXX \ BIN
  4. 执行以下命令mayapy X:\ WhereYouSaved \ ez_setup.py

现在简单安装应该正确设置。你可能想还是做以下步骤:

  • CD X:\玛雅安装目录\ python的\脚本
  • 重命名该文件夹中的所有文件,开始与马
    • 例如:%i的(*)做仁%我是个%I
  • 这个文件夹添加到您的路径
    • 猛击Win + E
    • 人民币我的电脑,选择属性
    • 高级系统设置 - >环境变量
    • 搜索变量路径编辑和追加; X:\玛雅安装目录\ python的\脚本
  • 现在你可以从cmd中调用maeasy_install pythonModule来安装东西。如果安装程序文件,然后玛雅你真的不能安装的东西,而提升:您也可以拨打内部玛雅以下步骤来安装模块:

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

    注意。除非您将磁盘权限更改为Maya python目录。

    +0

    谢谢。 'easy_install.main()'正是我正在寻找的,因为在Maya中执行修改后的'ez_setup.py'也会安装它。 – DoctorPangloss

    8
    #!/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 
    
    +0

    这看起来很有趣。这是否尝试导入'sortedcollection',如果导入失败,请安装包? – DoctorPangloss

    +0

    @DoctorPangloss:是的,正确的。它尝试在try/catch块内导入Cython和sortedcollection。当它失败时,它使用pip来安装''REQUIREMEMENTS''中列出的依赖项。然后它尝试再次导入cython和sortedcollections,这次应该可以工作。 –