我可以严格地在脚本中从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!
严格在脚本范围内安装模块的最优雅方法是什么?
答案 0 :(得分:17)
在Windows上为Maya安装easy_install。
现在应该正确安装。您可能还想继续执行以下步骤:
现在您可以从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]