第一个自制公式,在收集依赖关系和资源后不了解安装过程

Jon*_*ine 16 python homebrew

上下文(跳过除非要求)

我是一个超级小组,在这里,在这里,所以请你好!我想写一个公式的项目用于认知心理学研究的背景下; 它可能不会仅仅因为用户群非常狭窄而看到非常广泛的分布; 到目前为止,我刚刚在每个人的计算机上手动安装这个.但它终于得到充分利用,这已不再可行.

我所知道的唯一"Ruby"来自于编写SCSS/Sass,所以我大多只是复制并粘贴成功之类的东西.

问题

在坚果壳中,我试图通过Homebrew分发我已经工作了一段时间的项目.这包括:

  • 我写的主要是一个较大的Python模块
  • 基于Python的CLI,用于与所述模块交互
  • CLI使用模块创建内容时使用的一些模板文件
  • 几个Python依赖项
  • 一个Python依赖项不是由PyPi分发的,而是在GitHub上提供的
  • 一个编译的 Python依赖项,分布在第三方,​​通常是硬件购买
  • SDL2
  • 一些你从未听说过的框架

我明白:

  • 如何指定brewable依赖项
  • 如何将我的Python依赖项包含为资源.我为我的模块编写了一个非常简单的setup.py,我已经使用了大约一年,但是,我手动安装的所有其他部分.
  • 如何安装项目的某些基本规范方面(即将CLI链接到/ usr/local/bin

我不明白:

  • 如何在Cellar中实际安装任何东西 如何安装自制语言片段未涵盖的某些几率和结尾我已经从阅读公式中解脱了
  • 得到所有这些位,一旦他们在酒窖中找到对方(我的意思是我抽象地理解这是通过符号链接和$ PATH变量实现的,但具体地说,这超出了我的深度 - 我是一个自学成才的网站-developer出身的程序员换了,实验室-I-工作在)
  • 在哪里放置CLI及其模板文件,以及如何配置setup.py(如果确实是setup.py应该在哪里完成)以期望它们在酿造的位置

值得注意的是,我的实验室使用的是Python系统.我并不反对在brew安装的Python版本中运行(实际上我更喜欢它),但是,安装不能导致系统Python停止在命令行使用的默认版本,主要是因为如果用于执行程序的记忆例程失败并且我不能保证他们没有在系统site-packages目录中安装东西(抱歉),那么预期的用户群(即熟练程度非常低的编码器)将会惊慌失措并逃离.

如果其中任何一个不清楚,无论如何向我提出问题,我将很乐意澄清.

这是一个指向Git存储库的链接,用于引用项目的目录结构.

到目前为止,我的剧本并不是很大,据我所知:

class Klibs < Formula
  desc ""
  homepage ""
  url "https://github.com/jmwmulle/klibs/archive/0.9.1.4.tar.gz"
  version "0.9.1.4"
  # sha256 is wrong; just been editing the local cache while I learn how to do this properly :S
  # (in case anyone tries to brew create the repository and notices)
  sha256 "d854b85fc6fae58a9f6d046c206a73ac8c5948e89740cd55c02450e1ba9af0e0"

  depends_on :python if MacOS.version <= :snow_leopard
  depends_on "sdl2"         => :required
  # bunch of other brewable dependencies

  resource "PySDL2" do
    url "https://pypi.python.org/packages/source/P/PySDL2/PySDL2-0.9.3.zip"
   sha1 "030f2351d1da387f878e14c8a86e08571d7baf5b"
  end  

  # ...bunch of other python modules

  resource "AggDraw" do  # note that this one's not hosted by PyPi
    url "https://github.com/preo/aggdraw.git"
    sha1 "92e5e75aaaf5c535735d974764472e7e4d8e5cb0"
  end

  def install
      resource("PySDL2").stage { system "python", *Language::Python.setup_install_args(libexec/"vendor") }
      # and, again, more python modules
      cd "klibs" do
          ENV.prepend_create_path "PYTHONPATH", libexec/"lib/python2.7/site-packages"
          cd "lib/pylink" do
              cd "frameworks/eyelink" do
                  frameworks.install("eyelink_core_graphics.framework")
                  frameworks.install("eyelink_core.framework")
              end   
              # this next part I *know* must be wrong, I'm just not sure how to achieve 
              # this the homebrew way and thought I'd at least demonstrate what 
              # I need to do; this is a pre-compiled, third-party python module
              # that is not distributed by any other means  
              system "cp", "-r", "pylink", "#{libexec}/lib/python2.7/site-packages"
              system "ln", "-s", "#{libexec}/lib/python2.7/site-packages/pylink"
          end
          system "python", "setup.py", "install", "--prefix=#{prefix}"
      end
      bin.install("bin/klibs")
      lib.install("lib/klibs")
  end
  test do
    system "false"
  end
end
Run Code Online (Sandbox Code Playgroud)

dno*_*zay 1

嗯,homebrew这不是打包和分发代码的最佳媒介(仅限 OSX)。您可能想查看:http://python-packaging-user-guide.readthedocs.org/en/latest/distributing/。取决于您编写代码的方式;您也许可以将您的要求直接放入您的文件中setup.py,而不是将它们放入自制配方中。

至于你正在使用的包不在 PyPI 上;问自己以下问题:

  • 我想要使​​用的代码是否具有适当的软件许可证?
  • 我可以在 github 项目上提出问题以便所有者将它们放到 PyPI 上吗?

让机器符合特定的配置

如果您正在管理一个机器场:

  • chef, puppet, salt, ansible, ...

如果您只关心分布:

  • setuptools+ virtualenv+pip是一个很好的组合。
  • pip能够从 PyPI、github、文件服务器等安装需求