LoginSignup
2
2

More than 5 years have passed since last update.

Hyで書いたライブラリをPyPIに登録する備忘録

Posted at

これを作った時に試行錯誤した備忘録です.
setup.pyの内容やファイルの構成のうち通常のPythonと異なる部分のみ記述しています.

Hyからの使用のみ想定している場合

ファイルの構成
.
├── hoge
│   ├── __init__.hy
│   ├── fuga
│   │   ├── __init__.hy
│   │   └── fugafuga.hy
│   └── hogehoge.hy
└── setup.py

1 directories, 5 files

setup.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from setuptools import setup

config = {
    'install_requires': ['hy'],
    'packages': ['fuga', 'fuga.hoge'],
    # __init__.pyが無いのでfind_packagesはダメ

    'package_data': {
        'fuga': ['*.hy'],
        'fuga.hoge': ['*.hy'],
    },
    # 通常は.pyファイルしか含まれないので.hyが含まれるように指定してあげる
}

if __name__ == '__main__':
    setup(**config)

Pythonからも使用したい場合

setup.pyでエントリーポイントを設定する場合もこちら

ファイルの構成
.
├── hoge
│   ├── __init__.py # トップレベルのみ .hyではなく.pyに
│   ├── fuga
│   │   ├── __init__.hy
│   │   └── fugafuga.hy
│   └── hogehoge.hy
└── setup.py # setup.pyはおなじでOK

1 directories, 5 files

hoge/__init__.py
import hy as _hy
# import hyでももちろんいい
# hyをimportするとimportフックで.hyをimportできるようになる

その他

PyPIにアップロード

当たり前ですがPythonのときと全く一緒です.ちなみにpython setup.py registerではなくtwineを使いましょうsetup.pyを使うやり方はTestPyPIでは現役ですが本番PyPIでは現在は使用できません.

PythonとHyを混在させる場合

Pythonのソースがあるところにはもちろん__init__.pyが必要.ちなみにCで書いた拡張を併用する場合も__init__.pyが必要です.

2
2
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
2
2