27
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Swift3でPython3を呼び出してみた!

Last updated at Posted at 2017-07-06

#はじめに
Swiftのバージョンが3になってからのPythonの呼び出しについての記事がなかったので自分で参考ページを調べてとりあえずやれるところまでやってみました。
参考ページ ※1年ほど前の記事なので注意!

#Xcode(Swift側)での操作
1.Creat a Xcode projectでmacOSのApplicationのCocoaApplicationを選択して
、プロジェクトを作成しましょう。

2.そして次に生成されたプロジェクトフォルダ内にあるAppDelegate.swiftの記述されている"NSApplicationMain"を消しましょう。
スクリーンショット 2017-07-06 17.02.37.png

3.プロジェクト内に"main.swift"という名前でファイルを作成しましょう。
※ちなみにファイル名を"Main.swift"という名前にしたらエラーを吐かれました。
そして以下のコードを記述しましょう。
参考ページのコードを書くとエラーを吐くので対応)

import Cocoa

let path = Bundle.main.path(forResource: "Bridge", ofType: "plugin")
guard let pluginbundle = Bundle(path: path!) else {
    fatalError("Could not load python plugin bundle")
}
pluginbundle.load()

NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)

#Python3側の操作
1.ターミナルで以下のコマンドを実行

$ pip3 install pyobjc py2app

2.Xcodeのファイルパスが色々と面倒なので作成したXcode project内にPythonファイル及びフォルダを作成しましょう。

3.フォルダの構成とpythonファイルは以下のとおり
構成:setuptools/py2app
py2appフォルダ内に"Bridge.py"と"setup.py"を作成

Bridge.py
"""Bridge.py. The main Python-(Swift) plugin bundle entry module"""
import logging

logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)

logger.info("Loaded python bundle")
setup.py
"""Setuptools setup for creating a .plugin bundle"""
from setuptools import setup


APP = ['Bridge.py']
OPTIONS = {
  # Any local packages to include in the bundle should go here.
  # See the py2app documentation for more
  "includes": [],
}

setup(
    plugin=APP,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
    install_requires=['pyobjc'],
)

4.その後ターミナルで以下のコマンドを実行

python3 setup.py py2app -A

参考ページでは

python setup.py py2app -A

となっていましたがエラーを吐きました。なのでpython3で実行コマンドを行ってください。

実行が成功するとターミナルの実行結果の最後に"Done!"と表示されます。

そうするとsetuptools/py2app/のフォルダ内に"build"と"dist"というフォルダが生成されています。そして以後記述しますが"dist"のフォルダ内に"Bridge.plugin"が生成されています。
スクリーンショット 2017-07-06 17.35.55.png

5.生成された"dist"フォルダ内にある"Bridge.plugin"をXcodeのプロジェクト内に統合しましょう。 XcodeのプロジェクトでAdd Files to ~~~を選択して、"Bridge.plugin"を追加するだけ。

#実行
Xcode projectを実行してみましょう。
こんな感じにならOK!
スクリーンショット 2017-07-06 17.48.41.png
ちなみにBridge.pyのlogger.infoがコンソールに出力されているはずです。

#とりあえず今回はここまで!
参考ページはまだ項目があるので引き続き行っていきます。

27
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?