对于缺少 pip 的平台,如何以编程方式/通过 Python 脚本安装 Python 模块而不使用 pip?

问题描述 投票:0回答:3

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

我使用非标准Python环境,Autodesk Maya 2012的Python解释器。它不附带

easy_install
pip
,并且没有 shell,只有由主 Maya 可执行文件调用的
python
脚本解释器。将
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 + 子进程调用更优雅的东西?我觉得这是一个基本功能。我通过

pip
在网上看到了编程模块安装的文档,但是需要先安装
pip

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

python pip distutils easy-install maya
3个回答
18
投票

在 Windows 上安装 Maya 的 easy_install。

  1. 下载ez_setup.py
  2. 打开Windows cmd提升(开始,输入cmdrmb单击它->以管理员身份运行)
  3. 将 cmd 目录更改为 x:\maya 安装目录
    • 示例:cd c:\Program Files\MayaXX in
  4. 执行以下命令 mayapy x:\WhereYouSaved z_setup.py

现在简易安装应该已正确设置。您可能仍想执行以下步骤:

  1. cd x:\maya 安装目录\python\scripts
  2. 将此文件夹中的所有文件重命名为以 ma 开头
    • 示例:对于 (*) 中的 %i do ren %i ma%i
  3. 将此文件夹添加到您的路径中
    • 按 win+e
    • rmb我的电脑并选择属性
    • 高级系统设置->环境变量
    • 搜索变量路径,编辑它并附加 ;x:\maya install dir\python\scripts

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

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

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


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

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]
© www.soinside.com 2019 - 2024. All rights reserved.