2012-10-19 24 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,這次應該可以工作。 –