我可以在脚本中严格从 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
!
严格在脚本范围内安装模块的最优雅的方法是什么?
在 Windows 上安装 Maya 的 easy_install。
现在简易安装应该已正确设置。您可能仍想执行以下步骤:
现在你可以从 cmd 调用 maeasy_install pythonModule 来安装东西。您也可以在 Maya 内部调用以下命令来安装模块:
from setuptools.command import easy_install
easy_install.main( ["pythonModule"] )
注意: 如果 Maya 安装在程序文件中,那么您无法在不提升的情况下真正安装东西。除非您更改 Maya python 目录的磁盘权限。
#!/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
要使其正常工作,请打开
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]