2017-10-04 9 views
0

a small projectpipenvを使用しています。コードは役に立つと思われ、pypiを使って配布したいと思います。私はpipenvのWebページやそのgithubリポジトリでどのようにこれを達成するためのガイダンスを見つけることができません。pipenvプロジェクトをDRYでパッケージ化する方法は何ですか?

私はsetup.pyinstall_requires sectionに私Pipfile.lockから依存関係を入れることができますが、私は自動的にそれを行うためのツールを見つけることができない、とDRYにより手でそれをやってないだろう。

もっと良い提案がありますか?

+1

'install_requrements'を動的に生成することができ、ファイルがJSONです。あなたはそれから正しいリストを生成する関数を書く必要があります。 –

+0

乾杯。私はそれを行って、私の解決策をここに投稿します。 – winni2k

答えて

0

これは私のためにトリックを行うようだ:

import os 
from setuptools import setup, find_packages 
import json 


def get_requirements_from_pipfile_lock(pipfile_lock=None): 
    if pipfile_lock is None: 
     pipfile_lock = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'Pipfile.lock') 
    lock_data = json.load(open(pipfile_lock)) 
    return [package_name for package_name in lock_data.get('default', {}).keys()] 


packages = find_packages('.', exclude=['*.test', '*.test.*']) 
pipfile_lock_requirements = get_requirements_from_pipfile_lock() 

setup(
    name='my_package', 
    version='0.0.1', 
    packages=packages, 
    license='MIT', 
    long_description=open('README.md').read(), 
    install_requires=pipfile_lock_requirements, 
    python_requires=">=3.5", 
) 
+0

[クリエイティブコモンズのOrg自身による]ちょっとしたコメント(https://creativecommons.org/faq/#can -i-application-a-creative-commons-license-to-software)を使用する場合は、ソフトウェアでCCライセンスを使用しないでください。 – dangom

+0

Lol、私は全く同意します。私はそれをどこかからコピーしたに違いないと思う。 – winni2k

+0

ヒッチハイクのガイドから梱包まで手に入れたようです:https://the-hitchhikers-guide-to-packaging.readthedocs.io/en/latest/quickstart.html – winni2k

関連する問題