2009-06-01 20 views
16

easy_install piton uzatma gibi konsoldan piton yumurta yüklemenize olanak tanır:Bir python komut dosyasının içinde easy_install öğesini mi kullanıyorsunuz?

easy_install py2app 

Ama burada bir piton komut dosyası içindeki easy_install işlevselliğine erişmek mümkün mü? Ben os.system ("easy_install py2app") çağırmadan, ancak bir python modülü olarak easy_install dosyasını ithal etmek ve bunun yerine yerel yöntemleri kullanmak demek istiyorum.

cevap

18

Kurulum araçlarına baktığımda aşağıdakileri deneyebilirsiniz.

from setuptools.command import easy_install 
easy_install.main(["-U","py2app"]) 
+0

Google Arama'da Bulundu: easy_install.main ("-U py2app" .split()). Lütfen cevap metninizi değiştirin, böylece kabul edebilirim :) – grigoryvp

+2

Bunun çalıştığını onaylayabilirim - python projem için özel yükleme komut dosyaları oluşturmak için her zaman yaparım. +1 –

-2

Bunu, içe aktarma araçlarını kullanarak alabilirsiniz.

+0

Ve hangi yöntemleri çağırmak ya da nerede belgelerine bakmak için? :) – grigoryvp

2

Özellikle ne yapmaya çalışıyorsunuz? Eğer bazı garip şartları yoksa, senin setup.py dosyası bir bağımlılık olarak paket ilan öneriyoruz:

from setuptools import setup, find_packages 
setup(
    name = "HelloWorld", 
    version = "0.1", 
    packages = find_packages(), 
    scripts = ['say_hello.py'], 

    # Project uses reStructuredText, so ensure that the docutils get 
    # installed or upgraded on the target machine 
    install_requires = ['docutils>=0.3'], 

    package_data = { 
     # If any package contains *.txt or *.rst files, include them: 
     '': ['*.txt', '*.rst'], 
     # And include any *.msg files found in the 'hello' package, too: 
     'hello': ['*.msg'], 
    } 

    # metadata for upload to PyPI 
    author = "Me", 
    author_email = "[email protected]", 
    description = "This is an Example Package", 
    license = "PSF", 
    keywords = "hello world example examples", 
    url = "http://example.com/HelloWorld/", # project home page, if any 

    # could also include long_description, download_url, classifiers, etc. 
) 

Buradaki anahtar hat install_requires = ['docutils>=0.3'] olduğunu. Bu, kullanıcının aksini belirtmediği sürece, setup.py dosyasının bu bağımlılığı otomatik olarak yüklemesine neden olur. Bu here numaralı belgede daha fazla belge bulabilirsiniz (setuptools web sitesinin son derece yavaş olduğunu unutmayın!).

Bu şekilde tatmin edilebilecek bir gereksiniminiz varsa, muhtemelen S.Lott's answer'a bakmalısınız (yine de bunu kendim denemedim).

4
from setuptools.command import easy_install 

def install_with_easyinstall(package): 
    easy_install.main(["-U", package]). 

install_with_easyinstall('py2app') 
+0

+1 - bu işe yarıyor! :-) –

0

setuptools.main() çağrılmasına ilişkin yanıt doğrudur. Ancak, setuptools bir .egg oluşturuyorsa, betik kurduktan sonra modülü içe aktaramaz. Yumurtalar, python başlangıç ​​saatinde otomatik olarak sys.path dosyasına eklenir.

bir çözüm() yola yeni yumurta eklemek için gerektiren kullanmaktır:

from setuptools.command import easy_install 
import pkg_resources 
easy_install.main(['mymodule']) 
pkg_resources.require('mymodule') 
İlgili konular