Giter Site home page Giter Site logo

pythonkit's Introduction

PythonKit

Swift framework to interact with Python.

Requirements

PythonKit requires Swift 5 or higher and has been tested on macOS, Linux and Windows.

Usage

Some Python code like this:

import sys

print(f"Python {sys.version_info.major}.{sys.version_info.minor}")
print(f"Python Version: {sys.version}")
print(f"Python Encoding: {sys.getdefaultencoding().upper()}")

Can be implemented in Swift through PythonKit with the following code:

import PythonKit

let sys = try Python.import("sys")

print("Python \(sys.version_info.major).\(sys.version_info.minor)")
print("Python Version: \(sys.version)")
print("Python Encoding: \(sys.getdefaultencoding().upper())")

Swift Package Manager

Add the following dependency to your Package.swift manifest:

.package(url: "https://github.com/pvieito/PythonKit.git", .branch("master")),

Environment Variables

As the Python library are loaded at runtime by PythonKit, it will try to find the most modern Python version available in the system. You can force a given version with the PYTHON_VERSION environment variable or an specific Python library path or name with PYTHON_LIBRARY.

$ PYTHON_VERSION=3 swift run
[*] Python 3.5
$ PYTHON_VERSION=2.7 swift run
[*] Python 2.7
$ PYTHON_LIBRARY=libpython3.5.so swift run
[*] Python 3.5
$ PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so swift run
[*] Python 2.7

If PythonKit cannot find and load the Python library you can set the PYTHON_LOADER_LOGGING environment variable to know from which locations PythonKit is trying to load the library:

$ PYTHON_LOADER_LOGGING=TRUE PYTHON_VERSION=3.8 swift run
Loading symbol 'Py_Initialize' from the Python library...
Trying to load library at 'Python.framework/Versions/3.8/Python'...
Trying to load library at '/usr/local/Frameworks/Python.framework/Versions/3.8/Python'...
Fatal error: Python library not found. Set the PYTHON_LIBRARY environment variable with the path to a Python library.

Troubleshooting

  • If your are targeting the Mac platform with the Hardened Runtime enabled make sure you are properly signing and embedding the Python framework you are trying to load with PythonKit. The Hardened Runtime Library Validation mechanism prevents a process from loading libraries that are not signed by Apple or the same developer as the main process.

Notes

  • Originally PythonKit was based on the Python module from the Swift for TensorFlow experimental project.
  • If you have questions about PythonKit you can ask on the Swift Forums.

pythonkit's People

Contributors

compnerd avatar dan-zheng avatar kewlbear avatar liuliu avatar lukasa avatar pvieito avatar saturnboy avatar texasmichelle avatar turbolent avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.