2015-04-12 85 views
2

我有一個只依賴wxPython的小型python程序。我在Linux上開發了這個工具,我設法使用Travis CI上的wine(github上的seguid_calculator)自動構建一個windows可執行文件。如何在Travis CI上構建MacOSX可執行文件?

我的解決方案涉及最近的葡萄酒版本和Pyinstaller的組合。

我想爲MacOS做類似的事情。我明白在Travis上也有一個MacOSX構建環境。我對MacOSX操作系統沒有任何經驗,我也沒有Mac。我知道你可以使用一種叫做「自制軟件」的東西來安裝第三方軟件包。

有沒有我想要做的例子呢?一個travis.yml文件的例子會很棒!

感謝您的任何輸入, /比約恩

*編輯*

我創造了只打開一個窗口,一個樣品的wxPython應用程序。它位於https://github.com/BjornFJohansson/macapp。 我使用下面的.travis.yml生成不起作用的可執行文件。

os: 
- osx 
language: objective-c 
python: 
- '2.7' 
before_install: 
- brew update 
- brew outdated xctool || brew upgrade xctool 
- brew install python 
- brew install wxpython 
- pip install pyinstaller 
- pyinstaller --noconsole --onefile hw.py 
- ls 
- ls dist/ 
- hdiutil create dist/hw.dmg -srcfolder dist/ -ov 
install: true 
deploy: 
    skip_cleanup: true 
    provider: releases 
    api_key: 
    secure: VK1oVWQCRomgcFNVua00B3YSsotezzU1p6/fh73/0vwQFzVMolVnAsnfSq6EAwIcJvakU0TI9pqZR+0S3PKnUs+Kn3Ar8OwQ88t2azZNwewBfKua3tM2/7BF4y7O0gOtN1F29Yxyu0zPInIVY17BqGygibQ1kthBTm+tj3YyNW8= 
    file: 
    - "dist/hw" 
    - "dist/hw.dmg" 
    on: 
    tags: true 
    all_branches: true 
    repo: BjornFJohansson/macapp 

基本上,首先我更新xtools(我見過很多這樣做,所以我決定也這樣做)。然後我釀造安裝python和wxpython。然後我pip安裝pyinstaller。我使用pyinstaller命令生成可執行文件(hw)和./dist下的「hw.app」文件夾。

我沒有設法部署.app文件夾,所以我用hdiutil做了一個.dmg。 然後我部署到github版本。

有人能告訴我這個設置有什麼問題嗎?

特拉維斯日誌可以在這裏找到:https://travis-ci.org/BjornFJohansson/macapp

回答

3

它沒有工作的原因是通過自制軟件安裝的wxPython版本不是32位。您需要從wxPython主頁安裝dmg。我發現了一個腳本,在那裏:https://github.com/ayufan/travis-osx-vm-templates/blob/master/scripts/packages.sh

我分叉了你的例子,並設法讓它運行(https://github.com/paulmueller/macapp/releases)。

.travis.yml現在看起來是這樣的:

language: objective-c 
python: 
- '2.7' 
before_install: 
- which python 
- brew install python --universal --framework 
- brew install wget 
- which python 
- export VERSIONER_PYTHON_PREFER_32_BIT=yes 
- defaults write com.apple.versioner.python Prefer-32-Bit -bool yes 
- which python 
- python --version 
# https://github.com/Homebrew/homebrew/issues/34470 
#- arch -i386 brew install wxpython --universal 
- mkdir dl 
- cd dl 
- wget http://downloads.sourceforge.net/wxpython/wxPython3.0-osx-3.0.2.0-cocoa-py2.7.dmg 
- ls 
- cd .. 
- sudo ./packages.sh 
- arch -i386 python -c "import wx; print wx.__version__" 
- arch -i386 pip install pyinstaller 
- arch -i386 pyinstaller --noconsole --onefile hw.py 
- ls 
- hdiutil create dist/hw.dmg -srcfolder dist/ -ov 
- zip -r dist/hw.zip dist/hw.app 
- ls dist/ 
install: true 
deploy: 
    provider: releases 
    skip_cleanup: true 
    api_key: 
    secure: KjdN4hSHWU3ZDg6lpDNMB2we9jLayM9C8pwyQrV/Xzq8HNH5eNHP8ScI64tvnS0yJegOXnHFwUhUrkMtEs3X29TKrom+8tJ5E52IdBO7xO8fqOfeugC2239vLzc3tNI6RJX/K7CZTsSRu5U++1RJVgcWYjrCln87DuXG+HZRdOI= 
    file: 
    - "dist/hw.dmg" 
    - "dist/hw.zip" 
    on: 
    tags: true 
    all_branches: true 
    repo: paulmueller/macapp 
+0

我有一位朋友在運行Yosemite(10.10.3)的Mac上測試您的可執行文件。以下是壓縮應用[zip應用](https://drive.google.com/file/d/0ByF9bZqbql11UkxTYjJqanJ0a3dubzVTZk5HY1NnUmhZLTBN/view?usp=sharing)和[dmg](https://drive.google.com/file/d/0ByF9bZqbql11NWwxT1lOZEtGS0tNRW92NUVzRHgySkU2SGZR/view?usp = sharing) –

+0

我會投這個答案,但是我沒有足夠的聲望,謝謝。 –

0

This指出,他們目前不接受新的「多系統」的要求,所以你將不能夠在任何情況下,以構建OS-X直到特拉維斯CI升級。

一般來說,你將需要得到接受的多操作系統再加入os: os-x.travis.yml文件,(可能在一個分支),然後尋找如何設置蟒蛇,pyinstaller &的wxPython了在OS-X - 家所有3頁在這方面都非常有幫助。

+1

感謝,我創建了一個示例應用程序的OS X –

0

您不需要os:部分。

我在使用Travis CI在Mac OSx上部署wxPython應用程序時遇到類似問題。不幸的是我的設置有點複雜,但它可能有助於解決您的問題。

我正在使用conda構建一切。

我特拉維斯配置:

# Mac OS X Python build 
language: 
- objective-c 
python: 
- "2.7" 
install: 
# install python via brew 
- brew install python 
# make brews python the system default 
- brew link --overwrite python 
- which python 
- python --version 
# pip init 
- pip install --upgrade pip 
# use anaconda 
- pip install conda 
- conda init 
- conda install --yes matplotlib 
- conda install --yes scipy numpy=1.8 
- conda install --yes 'numpy<1.9.0' 
- conda install --yes wxpython 
# final pip installs 
- pip install cython 
- pip install wheel 
- pip install sympy 
- pip install git+git://github.com/pyinstaller/[email protected]e0ebcc914798 
# show packages 
- pip freeze 
# build extensions 
- python setup.py develop 
script: 
# Create wheel pacakge 
- python setup.py bdist_wheel 
# Create binary 
- ./freeze_pyinstaller/macOSx_bundle_script.sh 
before_deploy: 
    - export RELEASE_PKG_FILEA=$(ls ./dist/*bin.zip) 
    - export RELEASE_PKG_FILEB=$(ls ./dist/*app.zip) 
    - export RELEASE_PKG_FILEC=$(ls ./dist/*.whl) 
    - echo "deploying $RELEASE_PKG_FILEA to GitHub releases" 
    - echo "deploying $RELEASE_PKG_FILEB to GitHub releases" 
    - echo "deploying $RELEASE_PKG_FILEC to GitHub releases" 
# This section was created with 
# sudo apt-get install ruby1.9.1-dev 
# sudo gem install travis 
# travis setup releases 
deploy: 
    provider: releases 
    api_key: 
    secure: gQu6BKSo5sucrieOvyLz/kn5Ai+vrnXK6Kdm+WMqzXE6keE0LzujXOHWQX2G2EBl1NCjzvt3HrEvJqwGEjLbduJBBPBHaOy71AfKuHaxRQPlFWMLn2iAVVval3q7xU4kEfjAdS50WmARqh6sT7gMj+pHpg1e3pz1SxybOeC40+k= 
    skip_cleanup: true 
    # Allow 
    file_glob: true 
    file: 
    - "${RELEASE_PKG_FILEA}" 
    - "${RELEASE_PKG_FILEB}" 
    - "${RELEASE_PKG_FILEC}" 
    on: 
    tags: true 
    repo: paulmueller/PyCorrFit 

我不得不創建一個應用程序的問題(可能是由於我的古構建系統)。因此,我曾與含有一個腳本來代替應用程序文件夾中的二進制文件:

cd $(dirname "$0") 
open -a Terminal.app ./MYAPP.bin 

哪裏MYAPP是應用程序的名字,我以前曾改名爲在應用文件夾中的二進制MYAPP.bin

當應用程序啓動時,終端打開並啓動二進制文件。

以下是使用版本內置特拉維斯:

https://github.com/paulmueller/PyCorrFit/releases/tag/0.8.7travis2

這是建立在一箇舊的MacBook一個工作版本:

https://github.com/paulmueller/PyCorrFit/releases/tag/0.8.7

與特拉維斯內置的版本有一些種類的wxpython錯誤。我沒有安裝最新OSx的Mac。看看它可能會幫助你(也許我)。

+0

我是用蟒蛇也考慮和暢達一路,也許不適去接近它的未來。 –

相關問題