【问题标题】:Using easy_install inside a python script?在 python 脚本中使用easy_install?
【发布时间】:2010-10-30 10:11:14
【问题描述】:

easy_install python 扩展允许从控制台安装 python 鸡蛋,例如:

easy_install py2app

但是是否可以在 python 脚本中访问 easy_install 功能?我的意思是,不调用 os.system("easy_install py2app") 而是将 easy_install 作为 python 模块导入并使用它的本机方法?

【问题讨论】:

    标签: python setuptools


    【解决方案1】:

    关于调用setuptools.main() 的答案是正确的。但是,如果 setuptools 创建一个 .egg,则脚本在安装后将无法导入模块。 Eggs 会在 python 启动时自动添加到 sys.path 中。

    一种解决方案是使用 require() 将新鸡蛋添加到路径中:

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

    【讨论】:

      【解决方案2】:

      当我查看设置工具源时,您似乎可以尝试以下方法。

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

      【讨论】:

      • 在谷歌搜索中找到:easy_install.main("-U py2app".split())。请更改您的答案文本,以便我接受它:)
      • 我可以确认这是可行的——我一直在为我的 python 项目构建自定义安装脚本。 +1
      【解决方案3】:
      from setuptools.command import easy_install
      
      def install_with_easyinstall(package):
          easy_install.main(["-U", package]).
      
      install_with_easyinstall('py2app')
      

      【讨论】:

        【解决方案4】:

        你具体想做什么?除非您有一些奇怪的要求,否则我建议您在 setup.py 中将包声明为依赖项:

        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 = "me@example.com",
            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.
        )
        

        这里的关键行是install_requires = ['docutils>=0.3']。除非用户另外指定,否则这将导致 setup.py 文件自动安装此依赖项。您可以在 here 上找到更多文档(请注意 setuptools 网站非常慢!)。

        如果您确实有某种无法通过这种方式满足的要求,您可能应该查看S.Lott's answer(尽管我自己从未尝试过)。

        【讨论】:

          【解决方案5】:

          我认为您可以通过导入 setuptools 来实现。

          【讨论】:

          • 还有什么方法可以调用或在哪里寻找文档? :)
          猜你喜欢
          • 2013-08-05
          • 2014-03-13
          • 2022-10-18
          • 2013-07-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-31
          • 2012-04-05
          相关资源
          最近更新 更多